Démarrer SSH automatiquement au démarrage

15

Complètement nouveau pour linux et Ubnuntu. Mise en place d'une machine pour faire du deep learning / des réseaux de neurones. Jusqu'ici ça se passe bien. Vous avez tout installé et exécuté. Je veux pouvoir utiliser ssh depuis mon ordinateur portable Mac pour utiliser le système. J'ai installé openssh et l'ai fait fonctionner.

Cependant, lorsque je redémarre la machine, le serveur ssh ne redémarre pas. Je vérifie avec sudo service ssh statuset ça rapporte et erreur. Je peux ensuite le démarrer et tout fonctionne bien.

Ma première pensée était que je devais lui dire de démarrer au redémarrage, et j'ai trouvé ce fil qui dit qu'il devrait démarrer par défaut et je n'ai pas besoin d'ajouter un chrontab ou quelque chose comme ça. Je ne pense donc pas que ce soit ça.

Ensuite, j'ai trouvé ce fil qui suggère d'utiliser la commande sudo update-rc.d ssh defaults, mais ce fil est assez ancien et il semble que la réponse n'était peut-être pas juste à l'époque?

Alors j'ai trouvé ce fil qui suggère de commenter la ListenAddressligne dans le fichier sshd_config . Fondamentalement, il dit que si ListenAddress est utilisé, il peut essayer d'obtenir l'IP avant qu'il ne soit attribué par le DCHP et donc le démarrage échoue. Ce qui est logique. Mais j'ai besoin de ce paramètre pour que ma redirection de port fonctionne sur mon réseau domestique.

Cette documentation sous l'entrée ListenAddress indique que

The default is to listen on all local addresses.

Alors peut-être que je n'en ai pas besoin pour faire fonctionner la redirection de port?

J'ai suivi le fil précédent de ce rapport de bogue qui est également assez ancien, mais suggère d'utiliser le gestionnaire de réseau pour redémarrer ssh à chaque fois que netmanager obtient une nouvelle IP.

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

C'est beaucoup plus que ce noobie peut évaluer à ce stade. Est-ce sûr? Est-ce la façon de procéder? Quelque chose d'autre a-t-il été élaboré au cours des 7 dernières années?

Tout conseil serait bon. Merci.

Rothrock
la source
Gee, j'ai simplement installé le paquet openssh-server et l'ai configuré correctement. Mon serveur ssh a automatiquement démarré correctement à chaque fois depuis. Pas besoin de violon supplémentaire.
user535733
1
Utilisez-vous la redirection de port et vous n'avez pas eu besoin d'utiliser le paramètre ListenAddress? Si oui, pouvez-vous partager ce que comprend "configuré correctement"?
Rothrock
Pour tout cela, vous n'avez fourni aucune information sur l'état de SSH lors de votre premier démarrage. Qu'est-ce que la systemctl status sshsortie?
muru
Votre problème semble similaire à celui-ci (apparemment non résolu) Le démon SSH ne démarre pas normalement - pouvez-vous modifier votre question pour inclure la sortie desystemctl status NetworkManager-wait-online.service
steeldriver
1
Comment avez-vous configuré votre transfert de port? Je n'utilise pas du tout ListenAddress et les choses fonctionnent bien sur mon serveur domestique. Mon routeur transfère tout ce qui entre sur un port que je spécifie (22 si vous voulez le port standard, mais vous pouvez utiliser n'importe quoi tant qu'il n'entre pas en conflit avec d'autres services sur votre réseau international) vers l'ordinateur que je veux. Par exemple, tout ce qui arrive sur le port 12345 est transféré vers le port 22 sur mon serveur CentOS. Tout ce qui arrive sur 12346 est transmis au port 22 de mon RasPi sans tête. Tout ce qui arrive sur 12347 va au port 6697 pour le videur IRC sur mon RasPi.
RobertRSeattle

Réponses:

43

Avez-vous essayé simplement de régler

sudo systemctl enable ssh

?

C'est ainsi que mon ssh est configuré pour s'exécuter au démarrage.

**** Je pars dans la partie ci-dessus de la réponse au cas où cela serait utile pour ceux qui rencontrent ce message ****

Citant mon commentaire ci-dessus:

Comment avez-vous configuré votre transfert de port? Je n'utilise pas du tout ListenAddress et les choses fonctionnent bien sur mon serveur domestique. Mon routeur transfère tout ce qui entre sur un port que je spécifie (22 si vous voulez le port standard, mais vous pouvez utiliser n'importe quoi tant qu'il n'entre pas en conflit avec d'autres services sur votre réseau international) vers l'ordinateur que je veux. Par exemple, tout ce qui arrive sur le port 12345 est transféré vers le port 22 sur mon serveur CentOS. Tout ce qui arrive sur 12346 est transmis au port 22 de mon RasPi sans tête. Tout ce qui arrive sur 12347 va au port 6697 pour le videur IRC sur mon RasPi

ListenAddress n'a rien à voir avec la permutation de ports, ListenAdress peut être utilisé pour un serveur configuré avec plusieurs adresses IP sur une ou plusieurs cartes réseau. Citant d'ici (la page entière est une bonne explication): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

Disons que vous avez au total 8 adresses IP publiques et une adresse IP privée. Vous souhaitez> lier sshd à une IP publique sélectionnée (ex 70.5.xx.xx) et une IP privée (10.1.5.1) uniquement.

Heureusement, il existe un moyen facile d'y parvenir en utilisant l'option ListenAddress. Il> spécifie les adresses locales que sshd doit écouter. Si cette directive est> ignorée du fichier de configuration, sshd se liera ou listera toutes les adresses IP disponibles.

C'est pour permettre à certains de vos IP multiples d'accepter les connexions ssh. Je suppose que vous définissez ListenAddress sur votre IP publique ou sur l'IP interne de votre routeur - je suppose que si vous définissez cela sur l'IP locale de votre serveur, cela aurait bien fonctionné. Quoi qu'il en soit, vous savez maintenant comment fonctionne ListenAddress et vous serez prêt si vous devez configurer un serveur plus compliqué. Heureux d'entendre que vous avez fait fonctionner les choses.

RobertRSeattle
la source
2
+1 C'est la bonne réponse. Ubuntu 16.04 a commencé à utiliser systemd. La commande de cette réponse utilise systemd pour démarrer SSH au redémarrage. Les autres threads liés par l'OP s'appliquent uniquement à upstart et non à systemd ou ne s'appliquent pas du tout à leur problème.
Sam Gleske
1
J'ai fait systemctl list-unit-files –type = service et je vois que ssh.service est activé. Je ne pense donc pas que ce soit le problème. Mais merci pour l'astuce sur systemctl / systemd. Cela me donne plus d'endroits où chercher. Existe-t-il un moyen de dire à systemd / systemctl d'attendre que le DCHP renvoie l'adresse IP?
Rothrock
Après l'activation, un nouveau fichier doit être créé, vérifiez avecls -l /etc/systemd/system/sshd.service
Timo
2

Comme la solution suggérée ne fonctionnait pas pour moi, j'ai finalement trouvé qu'une commande supplémentaire était nécessaire pour démarrer SSH au démarrage:

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

Certains ont mentionné que cette commande:

sudo systemctl enable ssh.service

devrait être exécuté à la place de cette commande:

sudo systemctl enable ssh
adambg
la source
Ubuntu 18, aucun n'a fonctionné. Me demandant une connexion depuis l'interface graphique pour pouvoir ssh depuis une autre machine.
Deepdebugging