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

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

O Recent Upstart tem esses novos recursos sofisticados do tipo systemd para iniciar trabalhos na conexão de entrada via socket-bridge. Gostaria de iniciar meu sshd na primeira conexão com a porta 22.

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

O trabalho ssh começa bem quando eu me conecto à minha caixa na porta 22, mas o sshd não responde comigo. É como se não o recebesse e não pudesse aceitá-lo. Tentar conectar novamente não ajudará, até mesmo o sshd está em execução e deve aceitar as conexões normalmente. Upstart ainda está mexendo com isso!

Páginas de manual de eventos de soquetedizer:

Quando uma conexão de entrada é detectada, o descritor de arquivo que representa o soquete é passado para o trabalho em questão para permitir que ele aceite(2) a conexão. Além disso, a variável de ambiente UPSTART_JOB conterá o nome do evento ("socket") e a variável de ambiente UPSTART_FDS conterá o número do descritor de arquivo correspondente ao soquete de escuta.

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

Responder1

Usar a ponte de soquete requer um daemon corrigido que possa lidar com o soquete fornecido.

De man socket-event:

Quando uma conexão de entrada é detectada, o descritor de arquivo que representa o soquete é passado para o trabalho em questão para permitir que ele aceite(2) a conexão. Além disso, a variável de ambiente UPSTART_JOB conterá o nome do evento ("socket") e a variável de ambiente UPSTART_FDS conterá o número do descritor de arquivo correspondente ao soquete de escuta.

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

Responder2

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

Se for absolutamente necessário iniciar o sshd sob demanda, os seguintes comandos serão úteis para solução de problemas:

  • ps auxw | grep ssh, grep para ssh na lista de processos em execução.
  • netstat -tlp, fornece uma lista das portas TCP nas quais um serviço está escutando no momento. O SSH deve estar listado aqui; caso contrário, o sshd não está configurado corretamente.
  • ssh -vvv(executado a partir do cliente), saída de depuração detalhada da sua sessão ssh, ajuda a identificar o ponto de falha.
  • nmap <hostname>(executar a partir de um cliente - requer instalação do pacote nmap), liste as portas abertas no host. Se o SSH não estiver listado aqui, mas estiver listado na netstatsaída, você provavelmente tem um problema de firewall.

informação relacionada