Home / Istruzioni / SSH  Not f'd - you won't find me on Facebook  Identi.ca  Twitter  YouTube  Flickr  Instagram  LinkedIn  Reddit  Social

Connessione remota via Secure Shell (SSH)

Scarichiamoci il necessario

Abbiamo due macchine, entrambe con sistema operativo GNU/Linux. Il nostro obiettivo e' quello di configurare le due macchine affinche' dalla prima (che sara' il client) sia possibile connettersi alla seconda (che sara' il server), piu' precisamente per la connessione utilizzeremo il protocollo SSH con crittografia asimmetrica (chiave pubblica e chiave privata). Cominciamo dunque a scaricare il necessario lato server.

Sul server

Ipotizzando di essere su Debian GNU/Linux bastera' dare questo comando da terminale per installare il necessario:
apt-get install openssh-server
ora configuriamo il file sshd_config (dovrebbe essere nella directory /etc/ssh/). Quindi modifichiamolo:
nano /etc/ssh/sshd_config
Queste sono le righe da modificare:

# La porta 22 non va bene, troppo ovvia,
# per sicurezza mettiamone un'altra,
# meglio sopra i 1024.
# Attenti non vada in conflitto
# con altri servizi, controllate la lista qui:
# http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
Port 2014

# Dovrebbe essere gia' 2
Protocol 2

# Non vogliamo si acceda da root con la password
PermitRootLogin without-password

# Usa la chiave (vedremo dopo quale)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile	%h/.ssh/authorized_keys

# Una sfilza di no
ChallengeResponseAuthentication no
PasswordAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
UsePAM no

# https://www.qualys.com/2016/01/14/cve-2016-0777-cve-2016-0778/openssh-cve-2016-0777-cve-2016-0778.txt
UseRoaming no

# Si al X11 se volete
X11Forwarding yes

Adesso andiamo sul client.

Sul client

Ipotizzando ancora una volta di utilizzare Debian, da terminale diamo questo comando:
apt-get install openssh-clientt
Fatto.

Creazione delle chiavi

Adesso avviamo dobbiamo generare le nostre chiavi (quella privata che rimane al client e quella pubblica che daremo al server). Quindi dal terminale del client diamo questo comando:
ssh-keygen -t rsa
scegliamo il nome della chiave privata (quella pubblica sara' semplicemente NOMECHIAVEPRIVATA.pub), ci verra' chiesto di inserire una passphrase, confermiamo e salviamo la chiave pubblica e quella privata (quest'ultima attenti a non perderla).
Se le chiavi sono state salvate su una directory diversa da ~/.ssh vediamo di spostare li.

Ora modifichiamo il file di configurazione globale di SSH per il client (notate che il file in questo caso e' ssh_config e non sshd_config):
nano /etc/ssh/ssh_config
dobbiamo aggiungere poche cose:

ForwardX11 yes
# Queste sono le chiavi private che vogliamo usare
IdentityFile ~/.ssh/NOMECHIAVEPRIVATA
IdentityFile ~/.ssh/ALTRACHIAVEPRIVATA

Autorizzazione

Sul macchina server dobbiamo mettere la chiave pubblica del client. Procediamo in questo modo, da terminale sul client diamo questo comando (al posto di CHIAVEPUBBLICA inserite il nome della vostra chiave pubblica):
ssh-copy-id -i ~/.ssh/CHIAVEPUBBLICA $remote_user@$remote_host
Se questo procedimento non vi e' possibile, copiate la vostra chiave pubblica in altro modo, ad esempio:
xclip -sel clip < ~/.ssh/CHIAVEPUBBLICA
copiatela su un dispositivo e poi sul server incolliamo la chiave pubblica nel file ~/.ssh/authorized_keys
e abbiamo finito sul client.

Connessione

Apriamo un terminale sul client e connettiamoci al server (o mediante IP o mediante nome $remote_user@$remote_host:
ssh -p 2014 $remote_user@$remote_host

Nel caso il server e il client non fossero all'interno della stessa rete locale, occorre settare il router del server in modo che consenta l'accesso sulla porta che abbiamo scelto.

Altre configurazioni

E' consigliabile utilizzare una chiave per ogni connessione SSH, se dunque dobbiamo connetterci a una seconda macchina, oppure se utilizziamo git, dobbiamo specificare quale chiave utilizzare per ogni tipo di connessione. Lo facciamo modificando (o creando se non e' presente) il file ~/.ssh/config. Apriamolo:
nano ~/.ssh/config
e scriviamo ad esempio:

# connessione al computer macinino
Host macinino
HostName luca@macinino
Port 2014
User luca
IdentityFile ~/.ssh/macinino.key

# connessione a git
Host github.com
HostName github.com
Port 22
IdentityFile ~/.ssh/github.key

Commenti su Identi.ca.
Flattr this