Servidor SSH não está funcionando (reaparece até parar)

12

Eu tenho um Ubuntu Server 10.04.1 em execução. Quando tentei entrar no servidor via ssh, não consegui. Em vez disso, recebi um connection refusederro. Tentei fazer ping na máquina e recebi resposta! Portanto, o motivo claro é que o daemon SSH está parado.

Após a reinicialização, consegui acessar o meu servidor via ssh. Depois de algum tempo, examinei meus logs /var/log/sysloge encontrei os seguintes registros:

Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2465) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2469) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2473) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2477) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2481) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2485) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2489) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2493) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2497) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2501) terminated with status 255
Jan 16 10:57:09 myserver init: ssh respawning too fast, stopped

Eu procurei por um problema / solução semelhante. Algumas pessoas disseram que isso é causado pela SSH daemon tentando começar antes de rede e eles sugerem a mudança ListenAddressno /etc/ssh/sshd_configser 0.0.0.0. Penso que esta não é a causa no meu caso, porque o meu problema ocorre após o sistema estar em funcionamento.

Alguma ideia do que esta causando isso? Este é o Ubuntu Server e deve ser executado e acessado remotamente usando SSH.

ATUALIZAR:

Aqui está o snippet de log que encontrei /var/log/auth.log.

Jan 16 10:56:38 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/vim /etc/ssh/sshd_config
Jan 16 10:57:09 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/etc/init.d/ssh reload
Jan 16 10:57:09 myserver sshd[1465]: Received SIGHUP; restarting.
Jan 16 10:57:09 myserver sshd[2461]: Server listening on 0.0.0.0 port 22.
Jan 16 10:57:09 myserver sshd[2465]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2465]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2469]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2469]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2473]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2473]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2477]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2477]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2481]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2481]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2485]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2485]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2489]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2489]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2493]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2493]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2497]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2497]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2501]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2501]: fatal: Cannot bind any address.

Parece que esse erro começou a aparecer depois que eu recarreguei o daemon SSH. Devo evitar usar ssh reloade usar ssh restart?

Khaled
fonte
Também confira este. Pode ser um problema com sshd_config sintaxis bugs.launchpad.net/ubuntu/+source/openssh/+bug/911753

Respostas:

7

Você deve verificar o que aconteceu pouco antes do SSH começar a se debater syslog. Se o subsistema de rede morresse, isso poderia explicar por que sshdcomeçou a falhar.

Eu também verificaria /var/log/auth.log. É o sshdregistro e pode fornecer uma mensagem de erro melhor.

Oli
fonte
Obrigado! Encontrei muitas entradas no auth.logarquivo e atualizei minha pergunta.
Khaled
reloaddeve ser uma ação válida. Ele deve acionar uma reinicialização interna (e parece ter tentado isso e ficou travado). Tente recarregar novamente e veja se ele fica preso novamente.
Oli
na verdade, recarregar deve ser válido, mas há um erro. Veja minha resposta para mais informações.
precisa saber
16

Eu apenas tive o mesmo problema na minha caixa de 12.04. Ou seja, os mesmos sintomas. Infelizmente, sempre acontecia quando eu introduzia a ListenAddresscláusula com os endereços inete inet6em sshd_config. Em suma, isso parece ser um sintoma de um malformado sshd_config- embora os arquivos de log não tenham declarado nada parecido.

Solução de problemas sshd

O que eu acho geralmente muito útil nesses casos é começar sshdsem deixar daemonizar. O problema no meu caso era que syslognem auth.logmostrava nada significativo.

Quando o iniciei no terminal, obtive:

# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.

Muito melhor! Essa mensagem de erro me permitiu ver o que havia de errado e corrigi-lo. Nenhum dos arquivos de log continha essa saída.

Nota: pelo menos no Ubuntu, $(which sshd)é o melhor método para satisfazer a sshdexigência de um caminho absoluto. Caso contrário, você vai ter o seguinte erro: sshd re-exec requires execution with an absolute path. O -p 10222faz sshdescutar nessa porta alternativa, substituindo o arquivo de configuração - para não colidir com sshdinstâncias potencialmente em execução . Certifique-se de escolher uma porta gratuita aqui.

Esse método me ajudou muitas vezes a encontrar problemas, sejam de autenticação ou outros tipos. Para obter uma saída realmente detalhada stdout, use $(which sshd) -Ddddp 10222(observe o dditem adicionado para aumentar a verbosidade). Para mais verificação de bondade de depuração man sshd.


A principal vantagem desse método é que ele permite que você verifique a sshdconfiguração sem precisar reiniciar a sshdporta padrão. Normalmente, isso não deve interferir nas conexões SSH existentes, mas eu já vi. Portanto, isso permite validar o arquivo de configuração antes de, potencialmente, interromper o acesso a um servidor remoto (por exemplo, eu tenho isso para alguns VPS e até para servidores físicos em que preciso pagar mais para obter acesso fora de banda para a máquina).

0xC0000022L
fonte
3
Seu truque de invocação direta acabou de salvar meu bacon. Ocorreu um erro no meu arquivo sshd_config (gerado a partir do Chef) que consegui resolver usando essa técnica. Obrigado por reservar um tempo para publicá-lo a todos.
precisa
4

Esse parece ser o resultado do bug # 687535, que foi corrigido recentemente no natty e foi carregado no maverick e no lucid como uma atualização proposta.

https://bugs.launchpad.net/ubuntu/lucid/+source/openssh/+bug/687535

Encorajo todos a irem lá, experimentar o caso de teste (procurar TEST CASE) e postar seus resultados antes e depois da instalação da correção proposta. Isso ajudará a equipe SRU a decidir que a verificação foi feita e a liberar como uma atualização.

SpamapS
fonte
2

Em /etc/ssh/sshd_config, verifique se todas as opções yes e no estão em minúsculas. Por exemplo, se você definir PermitRootLogin No, ssh não será iniciado. Na verdade tem que ser PermitRootLogin no.

Fluxo
fonte
1

Eu tive um problema semelhante com uma imagem do Ubuntu 11.10 em um Linode após reiniciar. O serviço ssh produziria no syslog:

Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3419) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3422) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh respawning too fast, stopped

É uma caixa de teste e tinha cerca de 60 dias de atividade. Por isso, em algum momento, instalei algo anexado à parte inferior do sshd_config:

ClientAliveInterval 60
ClientCountAliveMax 60

Comentar essas linhas permitiu ao ssh iniciar.

Joe
fonte
0

O Ubuntu ssh não foi iniciado e o syslog gerou "init: ssh main process (2044) finalizado com status 255"

/ usr / sbin / sshd -Ddp 10222

Claro que funcionou para mim para determinar o erro de linha sshd_config

user652460
fonte
-1

tenho o mesmo problema, a solução superior não funciona, mas eu tenho solução para isso.

root@imt:~# sshd
sshd re-exec requires execution with an absolute path
ssh localhost
ssh: connect to host localhost port 22: Network is unreachable

O caminho está ok conforme o documento, então eu corro manualmente sshd.

root@imt:~# /usr/sbin/sshd 
/var/run/sshd must be owned by root and not group or world-writable

A permissão / var / run / sshd é.

root@imt:~# ls -ld /var/run/sshd
drwsrwsrwt 2 root root 40 Jan  5 12:58 /var/run/sshd

root@imt:~# chmod 755 /var/run/sshd

então está bem. execute ssh localhost e verifique.

root@imt:~# ssh localhost 
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 64:93:fd:ab:4c:f9:7b:8a:86:60:22:f7:56:fa:ea:cc.
Are you sure you want to continue connecting (yes/no)? yes
Vicky Dhindsa
fonte
1
Embora este seja um guia útil, obviamente não foi o que levou o OP a sshdnão funcionar corretamente, como você pode ver nas mensagens de erro muito diferentes nos respectivos logs. -1
David Foerster