Iniciar o SSH automaticamente na inicialização

15

Completamente novo para linux e Ubnuntu. Configurando uma máquina para realizar aprendizado profundo / redes neurais. Até agora está indo bem. Tem tudo instalado e funcionando. Quero poder ssh do meu laptop Mac para usar o sistema. Eu instalei o openssh e consegui isso funcionar.

No entanto, quando eu reinicio a máquina, o servidor ssh não é reiniciado. Eu verifico sudo service ssh statuse relata e erro. Eu posso então iniciá-lo e tudo funciona bem.

Meu primeiro pensamento foi que eu precisava dizer para iniciar na reinicialização, e encontrei esse tópico que diz que ele deve iniciar por padrão e não preciso adicionar um chrontab ou algo assim. Então eu não acho que é isso.

Então eu encontrei este tópico que sugere o uso do comando sudo update-rc.d ssh defaults, mas esse tópico é bastante antigo e parece que a resposta talvez não estivesse certa até então?

Então, encontrei este tópico que sugere comentar a ListenAddresslinha no arquivo sshd_config . Basicamente, ele diz que se o ListenAddress for usado, ele poderá tentar obter o IP antes de ser atribuído pelo DCHP e, portanto, a inicialização falhará. O que faz sentido. Mas preciso desse parâmetro para fazer o encaminhamento de porta funcionar na minha rede doméstica.

Esta documentação sob a entrada para ListenAddress diz que

The default is to listen on all local addresses.

Então talvez eu não precise fazer o encaminhamento de porta funcionar?

Eu segui o tópico anterior deste relatório de bug, que também é bastante antigo, mas sugere o uso do gerenciador de rede para reiniciar o ssh toda vez que o netmanager obtém um novo IP.

echo /etc/init.d/ssh restart > /etc/NetworkManager/dispatcher.d/10ssh
chmod 755 /etc/NetworkManager/dispatcher.d/10ssh

Isso é muito mais do que este noobie pode avaliar neste momento. Isso é seguro? Essa é a maneira de fazer isso? Alguma outra coisa foi elaborada nos últimos 7 anos?

Qualquer conselho seria ótimo. Obrigado.

Rothrock
fonte
Puxa, eu simplesmente instalei o pacote openssh-server e o configurei corretamente. Meu servidor ssh foi iniciado automaticamente corretamente todas as vezes desde então. Não há necessidade de qualquer brincadeira extra.
user535733
1
Você está usando o encaminhamento de porta e não precisou usar o parâmetro ListenAddress? Em caso afirmativo, você pode compartilhar o que "o configurou corretamente" inclui?
Rothrock
Por tudo isso, você não forneceu nenhuma informação sobre o status do SSH ao inicializar. O que produz systemctl status ssh?
Muru
O problema soa semelhante a esta (aparentemente não resolvido) não SSH Daemon não iniciar normalmente maneira - você pode agradar a editar a sua pergunta para incluir a saída desystemctl status NetworkManager-wait-online.service
steeldriver
1
Como você tem sua configuração de encaminhamento de porta? Não uso o ListenAddress e tudo funciona bem no meu servidor doméstico. Meu roteador encaminha tudo o que entra em uma porta especificada (22, se você deseja a porta padrão, mas você pode usar qualquer coisa, desde que não entre em conflito com outros serviços da sua rede internacional) para o computador que desejar. Por exemplo, qualquer coisa que entra na porta 12345 é encaminhada para a porta 22 no meu servidor CentOS. Tudo o que entra no 12346 é encaminhado para a porta 22 do meu RasPi decapitado. Tudo o que vem em 12347 vai para a porta 6697 para o segurança IRC no meu RasPi.
RobertRSeattle

Respostas:

43

Você já tentou simplesmente definir

sudo systemctl enable ssh

?

É assim que eu tenho o meu ssh configurado para iniciar na inicialização.

**** Estou deixando a parte da resposta acima, caso seja útil para outras pessoas que se deparam com este post ****

Citando meu comentário acima:

Como você tem sua configuração de encaminhamento de porta? Não uso o ListenAddress e tudo funciona bem no meu servidor doméstico. Meu roteador encaminha tudo o que entra em uma porta especificada (22, se você deseja a porta padrão, mas você pode usar qualquer coisa, desde que não entre em conflito com outros serviços da sua rede internacional) para o computador que desejar. Por exemplo, qualquer coisa que entra na porta 12345 é encaminhada para a porta 22 no meu servidor CentOS. Tudo o que entra no 12346 é encaminhado para a porta 22 do meu RasPi decapitado. Tudo o que vem em 12347 vai para a porta 6697 para o segurança IRC no meu RasPi

O ListenAddress não tem nada a ver com a mudança de porta, o ListenAdress pode ser usado para um servidor configurado com vários endereços IP em uma ou mais NICs. Citando aqui (a página inteira é uma boa explicação): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

Digamos que você tenha um total de 8 endereços IP públicos e um endereço IP privado. Você gostaria de ligar o sshd a um IP público selecionado (ex 70.5.xx.xx) e somente ao IP privado (10.1.5.1).

Felizmente, existe uma maneira fácil de conseguir isso usando a opção ListenAddress. Ele especifica os endereços locais nos quais o sshd deve escutar. Se essa diretiva for> ignorada do arquivo de configuração, o sshd será vinculado ou listado em todos os endereços IP disponíveis.

É para permitir que alguns de seus vários IPs aceitem conexões ssh. Eu suponho que você defina o ListenAddress como seu IP público ou o IP interno do seu roteador - suponho que se você definir o IP local do servidor, ele funcionaria bem. Independentemente disso, agora você sabe como o ListenAddress funciona e estará pronto se precisar configurar um servidor mais complicado. Fico feliz em saber que você fez as coisas funcionarem.

RobertRSeattle
fonte
2
+1 Esta é a resposta correta. O Ubuntu 16.04 começou a usar o systemd. O comando nesta resposta está usando systemd para iniciar o SSH na reinicialização. Os outros encadeamentos que o OP vinculou se aplicavam apenas ao iniciante e não eram systemd ou nem se aplicavam ao problema.
Sam Gleske 13/03/19
1
Eu fiz systemctl list-unit-files –type = service e vejo que o ssh.service está ativado. Então, eu não acho que esse seja o problema. Mas obrigado pela dica em systemctl / systemd. Isso me dá mais lugares para procurar. Existe uma maneira de dizer ao systemd / systemctl para esperar até o DCHP retornar o endereço IP?
Rothrock
Após habilitar, um novo arquivo deve ser criado, verifique comls -l /etc/systemd/system/sshd.service
Timo
2

Como a solução sugerida não funcionou para mim, acabei descobrindo que é necessário um comando adicional para iniciar o SSH na inicialização:

sudo update-rc.d ssh defaults
sudo systemctl enable ssh.socket

Alguns mencionaram que este comando:

sudo systemctl enable ssh.service

deve ser executado em vez deste comando:

sudo systemctl enable ssh
adambg
fonte