Mudei de porta SSH padrão no meu servidor de casa (no /etc/ssh/sshd_config
arquivo) para a porta 54747, em seguida, reiniciado o ssh
e sshd
serviços (nunca tem certeza qual deles assim que eu fiz tanto apenas para ser seguro). Para testar minha configuração, efetuei logout e, em seguida, voltei a entrar sem nenhum problema.
Alguns dias depois, instalei as atualizações do apt e reiniciei o servidor. Quando tentei voltar a SSH (na porta 54747), recebi um erro de conexão recusada.
Por alguma razão, tentei fazer o SSH na porta padrão e funcionou! Voltei para verificar o sshd_config, mas ele ainda tinha a porta personalizada. Então, reiniciei os serviços ssh
e sshd
, e ele voltou ao comportamento "regular" (ssh na porta 54747). Tentei reiniciar novamente e a conexão foi recusada novamente ...
Alguém sabe o que eu fiz de errado?
Detalhes adicionais:
- Ubuntu 16.04.2 LTS
- O servidor também usa um HTPC, com uma sessão aberta (mesmo usuário que SSH) na minha TV
- Eu SSH usando a chave RSA do meu laptop e desabilitei a autenticação de senha
- Eu costumava reiniciar com
sudo reboot -h now
, mas depois de pesquisar, descobri que isso era desencorajado por algumas pessoas, então tenteisudo reboot
, mas não houve diferenças
EDIT Sequência de eventos:
- Altere a porta SSH de 22 para 54747 em
/etc/ssh/sshd_config
- Reinicie os serviços ssh e sshd
- Terminar sessão SSH atual
- SSH de volta com sucesso na porta 54747
- Reiniciar
- Erro de conexão SSH na porta 54747, mas com êxito na porta 22
- Reinicie os serviços ssh e sshd
- SSH de volta com sucesso na porta 54747, erro de conexão na porta 22
- Reinicie e volte para 6
EDIT 1: netstat
saída
rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDIT 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDIT 3: lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
Para referência, ATLAS é o nome do host do servidor remoto, 192.168.1.27 é o IP da LAN do meu laptop e o comando foi executado entre as etapas 6 e 7
ufw status
Status: inactive
EDIT 4: ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: rgo@pts/1 sshd
fonte
Port 10285
. O Google mostra alguns resultados para 54747 ... (3) Além disso, o servidor SSH pode trabalhar com várias portas simultaneamente. Crie duas diretivas separadas para cada porta:Port 22
ePort 54747
, em seguida, abra apenas a segunda no firewall. (4) Você pode tentar aMatch LocalPort
diretiva , colocada no início desshd_c
.Respostas:
O ssh pode ser "ativado por soquete" pelo systemd, dependendo da configuração, o que significa que inicialmente é o systemd que configura a porta de atendimento e o sshd é iniciado apenas quando um cliente se conecta pela primeira vez. Isso é para acelerar o tempo de inicialização: os daemons de serviço são iniciados somente sob demanda.
No entanto, isso significa que você também deve configurar o systemd na porta correspondente. Você encontrará a configuração do sistema em
/lib/systemd/system/ssh.socket
quais listasListenStream=22
. Para substituir isso, crie um arquivo/etc/systemd/system/ssh.socket.d/port.conf
(criando o diretório,ssh.socket.d
se necessário) que contenha:Mude o número para a porta desejada. A primeira entrada em branco apaga o padrão anterior e a entrada subseqüente adiciona a nova. Isso substitui o padrão enviado
/lib/systemd/system/ssh.socket
e deve ser feito além da alteração/etc/ssh/sshd_config
.Em seguida, execute
sudo systemctl daemon-reload
para informar o systemd sobre suas alterações esudo systemctl reload ssh
se o seu daemon ssh estava em execução anteriormente.fonte
/etc/systemd/system/ssh.socket.d/port.conf
está sendo ignorada e a reinicialização ainda redefine a porta para 22. O nome do arquivo é relevante? Não é possível encontrar boa documentação sobre substituições systemd no Ubuntu ..conf
. Veja systemd-system.conf (5) para obter detalhes sobre os arquivos de configuração de substituição do systemd.systemctl status ssh.socket
para ver se está ativado e o que está ouvindo.ListenStream=
linha antes da porta personalizada evitou isso, não sei por quê. Talvez isso "limpe" aListenStream=22
configuração no padrão/lib/systemd/system/ssh.socket
? Maneira estranha de substituir configurações. Talvez valha a pena adicionar isso à resposta?Verifique suas configurações de porta no
/etc/ssh/sshd_config
arquivo. Certifique-se de editar como sudo ou um usuário no grupo sudo. Tudo o que você precisa fazer para definir a porta é, em um tipo de linhaPort 54747.
Agora, reinicie o serviço ssh executando:service sshd restart.
Em seguida, verifique se o ssh está escutando nessa porta executandosudo netstat -lntp | grep ssh.
Reinicialização e teste.Verifique também suas configurações de rede. Se você estiver em uma rede corporativa, verifique se está na vlan correta.
fonte
Port 22
linha padrão paraPort 54747
somente. Além disso, o netstat que você me deu não teve saída. Eu adicionei um modificado no meu OPssh -i key.txt user@ipaddress -p 54747
. Verifique também se há mais alguma coisa ouvindo nessa porta. Façasudo lsof -i | grep ssh
. Você também pode verificar seu firewall para garantir que não esteja bloqueando nada. Fazer:sudo ufw status
.shutdown -r now
. Experimente e informe-nos os resultados. Veja este artigo para referência: askubuntu.com/questions/483670/…sudo reboot -h now
ou `sudo reboot``Às vezes as coisas dão errado. Se eu estivesse no seu lugar, tentaria:
fonte
cp
comando é apenas o caso, normalmente o processo de reinstalação não toca nos arquivos de configuração.ssh é o processo do cliente que arbitra e mantém uma conexão de sessão do usuário com o servidor ssh. sshd é o daemon que é executado no servidor ssh para escutar e autenticar solicitações de conexão ssh.
O arquivo de configuração no servidor sshd que é lido ao iniciar o serviço sshd (que requer privilégios de sudo para editar) é
O serviço deve começar com
Para reiniciar o sshd, o que envolveria reler o arquivo sshd_config
Para ver qual porta o daemon sshd está ouvindo, além de outras informações úteis, no tipo de servidor ssh
Execute estas etapas na ordem especificada:
Reinicialize o servidor ssh
Abra uma sessão de terminal no servidor ssh (não uma conexão ssh)
Tipo
hostname
Se o nome do host não retornar o nome do servidor ssh (neste caso, o Atlas) refaça a etapa anterior corretamente.
grep Port /etc/ssh/sshd_config
- anote o número da porta. Deve ser o que você especificousudo service sshd status
Se o status relatar que está ativo, executando e ouvindo na porta customizada especificada, você é bom nesse sentido. Caso contrário, a inicialização do serviço pode não estar chamando o arquivo sshd_config que você modificou, mas outro arquivo de configuração que contém informações padrão. Se o serviço não foi iniciado (diz que está morto e não está ativo e em execução), esse é um problema diferente do que você perguntou.
Essas etapas provavelmente identificarão a causa raiz do problema que você está perguntando.
Para fins de teste e por simplicidade: No lado do cliente, a partir de uma sessão do terminal, você ssh no servidor ssh da seguinte maneira
Com base no feedback do OP, suspeito que o sshd não esteja inicializando na inicialização, mas é iniciado corretamente quando invocado manualmente. As conexões ssh bem-sucedidas via porta 22 podem NÃO estar conectadas ao servidor ssh, mas a outra coisa (por exemplo, localhost). Para provar ou desmascarar isso, depois de conectar via tipo ssh
Com base no que o OP está dizendo, acho que o nome do host não será o atlas do servidor ssh.
Para isolar ainda mais isso, depois de reiniciar o servidor ssh, mas antes de fazer mais alguma coisa , em uma sessão de terminal no tipo de servidor ssh (Atlas)
Se isso falhar, como deveria, então
Se isso não funcionar, também confirmará os resultados obtidos ao executar
fonte
ssh -p <PORT> <USER>@<IP>
, com minha chave privada adicionada ao agente.Provavelmente você acabou de responder Y quando o apt detectou diferenças entre o sshd_config e o do pacote. Ele pergunta se você deseja instalar a versão do mantainer do pacote ou manter a sua.
fonte
Possíveis causas em que consigo pensar
/usr/lib/systemd/system/sshd.socket
aparentemente: https://www.vultr.com/docs/how-to-change-ssh-port-on-coreosfonte
find /etc/ -iname "*ssh*"
para procurar mais pistas.