Por que reiniciar um servidor executando o Ubuntu 14.04 me dá erros de 'Conexão recusada'?
Eu vejo, ssh: connect to host <IP-address-here> port 22: Connection refused
mas apenas para 14.04 e somente após a reinicialização. Estou usando o 12.04 Desktop em casa. Como faço para solucionar isso?
Para tornar a pergunta mais clara, eis o que funciona ou não para mim:
- SSH em uma nova instalação do 12.04> logout> SSH in again> works
- SSH em uma nova instalação do 12.04> reboot> SSH in again> works
- SSH em uma nova instalação do 14.04> logout> SSH in again> works
- SSH em uma nova instalação do 14.04> reiniciar> SSH novamente> Conexão recusada
O problema que estou enfrentando é exclusivo da 14.04 e só acontece após a reinicialização. Eu tenho vários servidores rodando 12.04 antes disso e tudo ainda funciona perfeitamente. Eu tenho um novo servidor no qual quero usar o 14.04 e quero entender o que está acontecendo de errado. Alguma sugestão?
Aqui está o que eu tentei até agora:
sudo traceroute -p 22 -T <IP-address-here>
Traceroute funciona bem, recebo uma resposta do servidor na porta SSH 22.
initctl list
...
ssh start/running, process 23371
...
Parece que o ssh no servidor 14.04 está definido para iniciar na inicialização (conforme o esperado).
tom@Desktop:~$ ssh -vvv root@<IP-address-here>
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to <IP-address-here> [<IP-address-here>] port 22.
debug1: connect to address <IP-address-here> port 22: Connection refused
ssh: connect to host <IP-address-here> port 22: Connection refused
Edit: Aqui está o syslog inteiro de uma máquina criada recentemente . Eu o criei, SSH'd no reboot now
comando & emitido , e recebi um erro de conexão recusada depois de esperar pela reinicialização e tentar fazer o SSH pela segunda vez. Reinicialização total via painel de controle de hospedagem e agora a conexão SSH funciona novamente.
Respostas:
Resposta rápida:
SSH não é o problema. O comando que você usa para reiniciar é o problema: não faça
reboot now
, façareboot
oushutdown -r now
reinicie o sistema.A sintaxe do comando ( desde 13.04 ) tem sido:
O
REBOOTCOMMAND
nunca existiu antes. Na versão 12.04, vocênow
foi ignorado, mas agora está sendo usado ... E está quebrando tudo.Resposta longa, com meus resultados de testes e explicação:
Eu tenho um problema semelhante com alguns servidores executando o 14.04 AND em VPS (hospedado no provedor OVH francês - executando o OpenVZ) E ao executar
reboot now
dentro do próprio servidor.Como você, emiti o comando
reboot now
do console (conectado usando SSH). Alguns segundos depois de pressionar RETURN, minha sessão é desconectada automaticamente. Como você, nunca consegui me reconectar ao servidor via SSH depois de emitir este comando.Então, decidi abrir o console KVM fornecido pela OVH. (emulando o acesso direto usando o teclado e a tela em um servidor físico para esse tipo de servidor virtual).
Consegui conectar-me à minha máquina e vi que ela estava entrando no modo de usuário único, esperando eu pressionar CTRL+ Dpara continuar ou inserir a senha raiz para entrar no modo de manutenção. Eu pressionei a combinação de teclas para continuar o processo e, em seguida, consegui fazer o SSH no meu sistema novamente. Qual foi minha surpresa ao ver, após a execução
uptime
, que o tempo de atividade não era de 2 ou 3 minutos, mas ainda muito dia:reboot now
executado dentro de um Ubuntu 14.04 VPS não está realmente reiniciando, mas apenas pedindo para entrar no modo de Usuário Único!Com isso, aprendi a nunca solicitar uma reinicialização no meu VPS, mas solicitá-la a partir do comando fornecido na interface de gerenciamento do hoster.
Portanto, não há nenhum problema com a instalação do SSH. O problema é quando você digita
reboot now
. Na verdade, eu testei depois também, se você tivesse digitadoreboot
(apenas a palavra, sem opção), teria feito o que você pretendia: reiniciar o servidor.Usando
reboot
com um argumento (na página de manual) chame o comandoshutdown
com os argumentos fornecidos. E, de fato, se eu executarshutdown now
, tenho o mesmo comportamento: o sistema não é reiniciado, entra no modo de usuário único.Observação: parece que é o comportamento pretendido, pois a mensagem que aparece na tela depois de pressionar a execução deste comando diz algo como:
Modo de manutenção ou modo de usuário único, isso representa o mesmo, um nível de execução com mais de um shell, nenhuma rede, nenhum processo de rede, ...
Isso pode ser confuso, mas observe que o uso correto de
shutdown
é, por exemplo:shutdown -h now
interromper o sistema agora oushutdown -r now
reiniciá-lo agora. Eu não sabia queshutdown now
apenas traria o sistema para o modo de usuário único. Eu costumo fazerinit S
para conseguir isso.fonte
sudo reboot now
funciona perfeitamente em 12.04 euptime
corresponde à última vez que o faço. Mudança muito interessante para 14.04.sudo reboot --single-user
obter essa funcionalidade ???Posso estar atrasado, e pode ser óbvio, mas o que funcionou para mim foi verificar o arquivo de configuração
/etc/ssh/sshd_config
: a execução do daemon com/etc/init.d/ssh start
ou qualquer outra combinação mostrou que o serviço estava sendo executado mesmo que não estivesse, mas se eu iniciar o executável com seu caminho absoluto (no meu caso/usr/sbin/sshd
), vi que havia um "0B" anexado no final do arquivo de configuração que causava um erro ao iniciar, removê-lo resolveu o problema.fonte
Outra causa potencial é
ufw
perder a configuração da regra de porta SSH. Isso ocorreu-me em pelo menos uma ou duas ocasiões, onde, após aplicar atualizações e reinicializações, a configuração do firewall estava me impedindo de obter acesso ao servidor. Usar o recurso de console VPS do meu provedor de hospedagem me permitiu entrar na máquina e diagnosticar o problema. Exemplo abaixo, mostrando o problema (ou seja, nenhuma entrada para a porta 22):Reativar a porta da seguinte maneira faz o truque:
fonte
Para o meu sistema, o problema era que o script ssh init
/etc/init.d/ssh
era o único que verifica a presença da versão inicial do init.Portanto
/etc/init.d/ssh
, não iniciassh,
porque acredita que será iniciadoupstart
.No meu caso, o upstart não inicia por causa da minha configuração específica:
Havia uma configuração correta
/etc/init/ssh.conf
, mas também havia um/etc/init/ssh.override
arquivo contendomanual
, o que significa quessh
é esperado que seja iniciado manualmente.Este arquivo foi criado pelo
get-remnux.sh
script de instalação.Iniciar manualmente ou remover o
/etc/init/ssh.override
arquivo resolve o problema.fonte