iniciando o sshd na primeira conexão à porta 22 com a nova ponte de soquete do upstart

3

O recente Upstart tem esses novos recursos de inicialização de tarefas na conexão de entrada via ponte de soquete. Gostaria de iniciar meu sshd na primeira conexão com a porta 22.

Agora tenho: start on socket PROTO=inet PORT=22 no meu ssh.conf e tenho tarefas de upstart-socket-bridge e upstart-udev-bridge em execução.

O trabalho ssh começa a funcionar quando me conecto à minha caixa na porta 22, mas o sshd não fala de volta para mim. É como se não recebesse e não pudesse aceitá-lo. Tentando novamente conectar não ajudará, mesmo o sshd está rodando e deve aceitar as conexões normalmente. O Upstart ainda está mexendo com isso!

Páginas do manual de eventos do Socket dizem:

When an incoming connection is detected, the file descriptor representing the socket is passed to the job in question to allow it to accept(2) the connection. Additionally, the environment variable UPSTART_JOB will contain the name of the event ("socket") and the environment variable UPSTART_FDS will contain the number of the file descriptor corresponding to the listening socket.

Isso significa que, para aproveitar isso, o ssh precisa de suporte específico para passar o FD do soquete? Se for esse o caso, isso estraga toda a diversão: /

    
por Tuminoid 18.01.2012 / 08:28

2 respostas

1

Usar a ponte de soquete requer um daemon com patches que possa manipular o soquete que é fornecido.

De man socket-event :

When an incoming connection is detected, the file descriptor representing the socket is passed to the job in question to allow it to accept(2) the connection. Additionally, the environment variable UPSTART_JOB will contain the name of the event ("socket") and the environment variable UPSTART_FDS will contain the number of the file descriptor corresponding to the listening socket.

Embora normalmente o sshd simplesmente crie um soquete e execute listen () e aceite () nele, o sshd só precisa ler a variável de ambiente UPSTART_FDS e aceitar ().

    
por SpamapS 20.02.2012 / 09:47
1

Eu recomendo veementemente executar o sshd como um serviço normal, em vez de ativá-lo sob demanda. O sshd é bem capaz de gerenciar conexões por conta própria em todos os casos, exceto nos mais extremos.

Se você precisa iniciar o sshd sob demanda, os seguintes comandos são úteis para solucionar problemas:

  • ps auxw | grep ssh , grep para ssh na lista de processos em execução.
  • netstat -tlp , fornece uma lista das portas TCP que um serviço é atualmente ouvindo. SSH deve ser listado aqui, se não, o sshd não é configurado corretamente.
  • ssh -vvv (executado a partir do cliente), saída de depuração detalhada do seu ssh sessão, ajuda a identificar o ponto de falha.
  • nmap <hostname> (executado a partir de um cliente - requer a instalação do pacote nmap), liste as portas abertas no host. Se o SSH não estiver listado aqui mas está listado na saída netstat , você provavelmente tem um firewall questão.
por cqcallaw 23.01.2012 / 07:16

Tags