Avvia SSH automaticamente all'avvio


15

Completamente nuovo di zecca per Linux e Ubnuntu. Configurare una macchina per fare reti di apprendimento profondo / neurali. Finora sta andando bene. Hai tutto installato e funzionante. Voglio essere in grado di ssh dal mio laptop Mac per utilizzare il sistema. Ho installato openssh e ho funzionato.

Tuttavia, quando riavvio la macchina, il server SSH non si riavvia. Controllo con sudo service ssh statuse segnala ed errore. Posso quindi avviarlo e tutto funziona bene.

Il mio primo pensiero è stato che devo dirlo per iniziare al riavvio, e ho trovato questo thread che dice che dovrebbe iniziare di default e non ho bisogno di aggiungere un chrontab o qualcosa del genere. Quindi non penso che sia così.

Poi ho trovato questo thread che suggerisce di usare il comando sudo update-rc.d ssh defaults, ma quel thread è piuttosto vecchio e sembra che la risposta forse non fosse corretta nemmeno allora?

Quindi ho trovato questo thread che suggerisce di commentare la ListenAddressriga nel file sshd_config . Fondamentalmente dice che se viene utilizzato ListenAddress potrebbe provare a ottenere l'IP prima che sia stato assegnato dal DCHP e quindi l'avvio non riesce. Questo ha senso. Ma ho bisogno di quel parametro per far funzionare il mio port forwarding sulla mia rete domestica.

Questa documentazione sotto la voce per ListenAddress lo dice

The default is to listen on all local addresses.

Quindi forse non ne ho bisogno per far funzionare il port forwarding?

Ho seguito il thread precedente a questo bug report che è anche piuttosto vecchio, ma suggerisce di usare il gestore di rete per riavviare ssh ogni volta che netmanager ottiene un nuovo IP.

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

Questo è molto più di quanto questo noobie possa valutare a questo punto. È sicuro? È questo il modo di farlo? Qualcos'altro è stato elaborato negli ultimi 7 anni?

Qualsiasi consiglio sarebbe grande. Grazie.


Accidenti, ho semplicemente installato il pacchetto openssh-server e l'ho configurato correttamente. Il mio server SSH si è avviato automaticamente correttamente ogni volta da allora. Non c'è bisogno di nessun altro armeggiare.
user535733

1
Stai utilizzando il port forwarding e non hai bisogno di utilizzare il parametro ListenAddress? In tal caso, puoi condividere ciò che include "configurato correttamente"?
Rothrock,

Per tutto questo, non hai fornito alcuna informazione sullo stato di SSH al primo avvio. Cosa produce systemctl status ssh?
Muru,

Il tuo problema sembra simile a questo (apparentemente irrisolto) Il demone SSH non si avvia normalmente - puoi modificare la domanda per includere l'output disystemctl status NetworkManager-wait-online.service
steeldriver

1
Come si configura il port forwarding? Non uso affatto ListenAddress e le cose funzionano bene sul mio server di casa. Il mio router inoltra tutto ciò che entra in una porta da me specificata (22 se si desidera la porta standard, ma è possibile utilizzare qualsiasi cosa purché non sia in conflitto con altri servizi sulla propria rete internazionale) al computer desiderato. Ad esempio, tutto ciò che entra nella porta 12345 viene inoltrato alla porta 22 sul mio server CentOS. Tutto ciò che arriva sul 12346 viene inoltrato alla porta 22 del mio RasPi senza testa. Tutto ciò che arriva sul 12347 va alla porta 6697 per il buttafuori IRC sul mio RasPi.
RobertRSeattle,

Risposte:


43

Hai provato semplicemente impostando

sudo systemctl enable ssh

?

Ecco come ho il mio SSH impostato per funzionare all'avvio.

**** Lascio nella parte precedente della risposta nel caso in cui sia utile per gli altri che si imbattono in questo post ****

Citando il mio commento dall'alto:

Come si configura il port forwarding? Non uso affatto ListenAddress e le cose funzionano bene sul mio server di casa. Il mio router inoltra tutto ciò che entra in una porta da me specificata (22 se si desidera la porta standard, ma è possibile utilizzare qualsiasi cosa purché non sia in conflitto con altri servizi sulla propria rete internazionale) al computer desiderato. Ad esempio, tutto ciò che entra nella porta 12345 viene inoltrato alla porta 22 sul mio server CentOS. Tutto ciò che arriva sul 12346 viene inoltrato alla porta 22 del mio RasPi senza testa. Tutto ciò che arriva sul 12347 va alla porta 6697 per il buttafuori IRC sul mio RasPi

ListenAddress non ha nulla a che fare con il portwading della porta, ListenAdress può essere utilizzato per un server configurato con più indirizzi IP su una o più schede NIC. Citando da qui (l'intera pagina è una buona spiegazione): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

Supponiamo che tu abbia un totale di 8 indirizzi IP pubblici e un indirizzo IP privato. Ti piacerebbe> associare sshd a un IP pubblico selezionato (ex 70.5.xx.xx) e privato> IP (10.1.5.1).

Fortunatamente esiste un modo semplice per ottenere ciò utilizzando l'opzione ListenAddress. Specifica> gli indirizzi locali su cui sshd dovrebbe ascoltare. Se questa direttiva viene> ignorata dal file di configurazione, sshd eseguirà il binding o l'elenco su tutti gli indirizzi IP disponibili.

Serve per consentire ad alcuni dei tuoi IP multipli di accettare connessioni ssh. Immagino che tu abbia impostato ListenAddress sul tuo IP pubblico o sull'IP interno del tuo router - Immagino che se lo imposti sull'IP locale del tuo server funzionerebbe bene. Indipendentemente da ciò, ora sai come funziona ListenAddress e sarai pronto se devi configurare un server più complicato. Sono contento di sentire che hai fatto funzionare le cose.


2
+1 Questa è la risposta corretta. Ubuntu 16.04 ha iniziato a utilizzare systemd. Il comando in questa risposta utilizza systemd per avviare SSH al riavvio. Gli altri thread collegati all'OP si applicavano solo all'avvio e non al sistema o non si applicavano affatto al loro problema.
Sam Gleske,

1
Ho fatto systemctl list-unit-files –type = service e vedo che ssh.service è abilitato. Quindi non penso che sia questo il problema. Ma grazie per il suggerimento su systemctl / systemd. Questo mi dà più posti in cui cercare. C'è un modo per dire a systemd / systemctl di attendere che il DCHP restituisca l'indirizzo IP?
Rothrock,

Dopo l'abilitazione, è necessario creare un nuovo file, verificare conls -l /etc/systemd/system/sshd.service
Timo

2

Poiché la soluzione suggerita non ha funzionato per me, alla fine ho scoperto che è necessario un comando aggiuntivo per avviare SSH all'avvio:

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

Alcuni hanno detto che questo comando:

sudo systemctl enable ssh.service

dovrebbe essere eseguito invece di questo comando:

sudo systemctl enable ssh

Ubuntu 18, nessuno ha funzionato. Richiedermi un accesso dalla GUI per essere in grado di ssh da un'altra macchina.
deepdebugging il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.