GNU/Linux >> Linux Esercitazione >  >> Linux

Una guida per principianti a SSH per la connessione remota su Linux

Una delle caratteristiche più interessanti di Linux è la capacità di utilizzare abilmente un computer con nient'altro che comandi inseriti nella tastiera e, meglio ancora, di poterlo fare su computer in qualsiasi parte del mondo. Grazie a OpenSSH, gli utenti POSIX possono aprire una shell sicura su qualsiasi computer a cui hanno il permesso di accedere e utilizzarla da una posizione remota. È un'attività quotidiana per molti utenti Linux, ma può creare confusione per qualcuno che deve ancora provarlo. Questo articolo spiega come configurare due computer per connessioni Secure Shell (SSH) e come connettersi in modo sicuro da uno all'altro senza password.

Terminologia

Quando si discute di più di un computer, può creare confusione identificarne uno dall'altro. La comunità IT ha termini consolidati per aiutare a chiarire le descrizioni del processo di collegamento in rete dei computer.

  • Servizio: Un servizio è un software che viene eseguito in background in modo che possa essere utilizzato da computer diversi da quello su cui è installato. Ad esempio, un server web ospita un servizio di condivisione web . Il termine implica (ma non insiste) che si tratti di un software senza interfaccia grafica.
  • Ospite: Un host è qualsiasi computer. In IT, i computer sono chiamati host perché tecnicamente qualsiasi computer può ospitare un'applicazione utile a un altro computer. Potresti non pensare al tuo laptop come a un "host", ma probabilmente stai eseguendo qualche servizio utile a te, al tuo cellulare o a qualche altro computer.
  • Locale: Il computer locale è quello utilizzato da te o da alcuni software. Ogni computer si riferisce a se stesso come localhost , per esempio.
  • Telecomando: Un computer remoto è uno a cui non sei fisicamente di fronte né fisicamente utilizzato. È un computer in un telecomando posizione.

Ora che la terminologia è risolta, puoi iniziare.

Attiva SSH su ciascun host

Affinché due computer possano essere collegati tramite SSH, su ogni host deve essere installato SSH. SSH ha due componenti:il comando che usi sul tuo computer locale per avviare una connessione e un server per accettare le richieste di connessione in entrata. Alcuni computer vengono forniti con una o entrambe le parti di SSH già installate. I comandi variano, a seconda del tuo sistema, per verificare se hai sia il comando che il server installati, quindi il metodo più semplice è cercare i file di configurazione rilevanti:

$ file /etc/ssh/ssh_config
/etc/ssh/ssh_config: ASCII text

Se questo dovesse restituire un No such file or directory errore, allora non hai il comando SSH installato.

Esegui un controllo simile per il servizio SSH (nota il d nel nome del file):

$ file /etc/ssh/sshd_config
/etc/ssh/sshd_config: ASCII text

Installa l'uno o l'altro, secondo necessità:

$ sudo dnf install openssh-clients openssh-server

Sul computer remoto, abilita il servizio SSH con systemd:

$ sudo systemctl enable --now sshd

In alternativa, puoi abilitare il servizio SSH da Impostazioni di sistema su GNOME o Preferenze di Sistema su macOS. Sul desktop GNOME, si trova in Condivisione pannello:

Avvia una shell sicura

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Ora che hai installato e abilitato SSH sul computer remoto, puoi provare ad accedere con una password come prova. Per accedere al computer remoto, devi avere un account utente e una password.

Il tuo utente remoto non deve essere lo stesso del tuo utente locale. Puoi accedere come qualsiasi utente sulla macchina remota purché tu disponga della password di quell'utente. Ad esempio, sono sethkenlon sul mio computer di lavoro, ma sono seth sul mio personal computer. Se sono sul mio personal computer (rendendolo il mio attuale computer locale) e voglio eseguire l'SSH nel mio computer di lavoro, posso farlo identificandomi come sethkenlon e utilizzando la mia password di lavoro.

Per accedere al computer remoto tramite SSH, è necessario conoscere il suo indirizzo IP (Internet Protocol) o il nome host risolvibile. Per trovare l'indirizzo IP della macchina remota, utilizzare il ip comando (sul computer remoto):

$ ip addr show | grep "inet "
inet 127.0.0.1/8 scope host lo
inet 10.1.1.5/27 brd 10.1.1.31 [...]

Se il computer remoto non ha l'ip comando, prova ifconfig invece (o anche ipconfig su Windows).

L'indirizzo 127.0.0.1 è speciale ed è, infatti, l'indirizzo di localhost . È un indirizzo "loopback", che il tuo sistema utilizza per raggiungere se stesso. Non è utile quando si accede a una macchina remota, quindi in questo esempio l'indirizzo IP corretto del computer remoto è 10.1.1.5. Nella vita reale, lo saprei perché la mia rete locale utilizza la sottorete 10.1.1.0. Se il computer remoto si trova su una rete diversa, l'indirizzo IP potrebbe essere quasi qualsiasi cosa (mai 127.0.0.1, però) e probabilmente è necessario un routing speciale per raggiungerlo attraverso vari firewall. Supponiamo che il tuo computer remoto sia sulla stessa rete, ma se sei interessato a raggiungere computer più remoti della tua rete, leggi il mio articolo sull'apertura delle porte nel tuo firewall.

Se puoi eseguire il ping della macchina remota tramite il suo indirizzo IP o il suo nome host e disponi di un account di accesso, quindi puoi accedervi tramite SSH:

$ ping -c1 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
$ ping -c1 akiton.local
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.

È un successo. Ora usa SSH per accedere:

$ whoami
seth
$ ssh [email protected]
bash$ whoami
sethkenlon

L'accesso di prova funziona, quindi ora sei pronto per attivare l'accesso senza password.

Crea una chiave SSH

Per accedere in modo sicuro a un altro computer senza password, è necessario disporre di una chiave SSH. Potresti già avere una chiave SSH, ma non fa male crearne una nuova. Una chiave SSH inizia la sua vita sul tuo computer locale. È costituito da due componenti:una chiave privata, che non condividi mai con nessuno o con niente, e una pubblica, che copi su qualsiasi macchina remota a cui desideri avere accesso senza password.

Alcune persone creano una chiave SSH e la usano per qualsiasi cosa, dagli accessi remoti all'autenticazione GitLab. Tuttavia, utilizzo chiavi diverse per diversi gruppi di attività. Ad esempio, uso una chiave a casa per autenticarmi su macchine locali, una chiave diversa per autenticarmi sui server Web che gestisco, una chiave separata per gli host Git, un'altra per i repository Git che host e così via. In questo esempio creerò una chiave univoca da utilizzare sui computer all'interno della mia rete locale.

Per creare una nuova chiave SSH, usa ssh-keygen comando:

$ ssh-keygen -t ed25519 -f ~/.ssh/lan

Il -t opzione sta per tipo e garantisce che la crittografia utilizzata per la chiave sia superiore a quella predefinita. Il -f opzione sta per file e imposta il nome e la posizione del file della chiave. Ti verrà chiesto di creare una password per la tua chiave SSH. Dovresti creare una password per la chiave. Ciò significa che dovrai inserire una password quando usi la chiave, ma quella password rimane locale e non viene trasmessa attraverso la rete. Dopo aver eseguito questo comando, ti rimane una chiave privata SSH chiamata lan e una chiave pubblica SSH chiamata lan.pub .

Per trasferire la chiave pubblica sul tuo computer remoto, usa ssh-copy-id . Affinché ciò funzioni, è necessario verificare di disporre dell'accesso SSH alla macchina remota. Se non riesci ad accedere all'host remoto con una password, non puoi nemmeno configurare l'accesso senza password:

$ ssh-copy-id -i ~/.ssh/lan.pub [email protected]

Durante questo processo, ti verrà richiesta la password di accesso sull'host remoto.

In caso di successo, prova ad accedere di nuovo, ma questa volta utilizzando il -i opzione per puntare il comando SSH sulla chiave appropriata (lan , in questo esempio):

$ ssh -i ~/.ssh/lan [email protected]
bash$ whoami
sethkenlon

Ripeti questo processo per tutti i computer della tua rete e sarai in grado di vagare per ogni host senza mai più pensare alle password. Infatti, una volta impostata l'autenticazione senza password, puoi modificare il /etc/ssh/sshd_config file per non consentire l'autenticazione della password. Ciò impedisce a chiunque di utilizzare SSH per autenticarsi su un computer a meno che non disponga della tua chiave privata. Per fare ciò, apri /etc/ssh/sshd_config in un editor di testo con sudo autorizzazioni e cerca la stringa PasswordAuthentication . Cambia la riga predefinita in questo:

PasswordAuthentication no

Salvalo e riavvia il server SSH (o semplicemente riavvia):

$ sudo systemctl restart sshd && echo "OK"
OK
$

Utilizzo di SSH ogni giorno

OpenSSH cambia la tua visione dell'informatica. Non sei più legato solo al computer di fronte a te. Con SSH, hai accesso a qualsiasi computer di casa o ai server su cui hai account e persino ai dispositivi mobili e Internet of Things. Sbloccare la potenza di SSH sblocca anche la potenza del terminale Linux. Se non usi SSH tutti i giorni, inizia ora. Mettiti comodo, raccogli alcune chiavi, vivi in ​​modo più sicuro ed espandi il tuo mondo.


Linux
  1. Una guida al terminale Linux per principianti

  2. Che cos'è CentOS:una guida per principianti

  3. 5 migliori app per desktop remoto per Linux

  4. Cos'è Linux? Una guida per utenti non tecnici

  5. Guida completa per l'utilizzo di AsciiDoc in Linux

Come SSH in una directory particolare su Linux

Esegui comandi su sistemi Linux remoti tramite SSH

Come impostare l'autenticazione a più fattori per SSH in Linux

Guida rapida ad Ansible per amministratori di sistema Linux

Come eseguire un backup Linux remoto utilizzando SSH

Guida per la configurazione del server SFTP in Linux