Como posso fazer um processo sshd de um disparo?

1

Estou tentando encontrar alguma invocação de sshd (OpenSSH no Ubuntu) que aceita apenas uma conexão e, em seguida, finalize o processo sshd quando essa conexão for fechada.

Não vejo nada no sshd docs que indique que isso é intrinsecamente possível, então eu estava pensando que seria possível equipar nc como um proxy único, mas isso não parece resolva o problema em que o processo sshd continua em execução depois que a conexão foi fechada.

Alguém tem alguma ideia?

    
por ipmcc 19.11.2015 / 18:05

2 respostas

3

Executar sshd no modo de depuração permite aceitar apenas uma conexão e, em seguida, encerrar, conforme indicado na página de manual de sshd :

-d

Debug mode. The server sends verbose debug output to standard error, and does not put itself in the background. The server also will not fork and will only process one connection. This option is only intended for debugging for the server. Multiple -d options increase the debugging level. Maximum is 3.

Este é um caso de uso típico para depuração, se você executar o servidor da seguinte forma:

/usr/sbin/sshd -d
    
por 19.11.2015 / 18:32
1

Talvez você possa usar pam para isso. No diretório /etc/pam.d encontre um arquivo relacionado ao SSH (no meu caso, ele é chamado de sshd em uma máquina Ubuntu Trusty). Edite-o e adicione uma linha como esta:

session     optional    pam_exec.so quiet /opt/myscript.sh

Isso fará com que o script seja chamado em qualquer login e logout. Como você só deseja fazer uma ação no logout, o conteúdo do script pode ser algo assim:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  /etc/init.d/sshd stop
fi
    
por 19.11.2015 / 18:24

Tags