Accesso remoto tramite SSH
Utilizzare le connessioni SSH per accedere in modo sicuro alle risorse, alle reti e alle applicazioni remote.
Accesso remoto a servizi e reti mediante SSH
L'inoltro della porta SSH, noto anche come tunneling SSH, trasporta i dati in modo sicuro su una connessione SSH cifrata tra un sistema locale e un sistema remoto. Dopo aver stabilito un tunnel SSH, il client SSH ascolta su una porta locale specificata e inoltra qualsiasi traffico che arriva a tale porta attraverso la connessione alla porta remota corrispondente.
Cifrando i dati in transito, l'inoltro delle porte SSH garantisce che le informazioni riservate siano sicure e inaccessibili, consente un accesso sicuro ai servizi e alle reti remoti senza esposizione diretta a Internet e ignora i firewall e le restrizioni di rete.
Di seguito sono riportati i tre tipi principali di inoltro delle porte SSH.
- Inoltro porta locale inoltra una porta dal client al server SSH e quindi alla porta di destinazione.
- Dynamic Port Forwarding crea un server proxy SOCKS per le comunicazioni su una vasta gamma di porte.
- Il comando Reverse Port Forwarding inoltra una porta dal server al client e quindi alla porta di destinazione.
È possibile utilizzare l'inoltro delle porte per accedere a un servizio non esposto all'interfaccia di rete pubblica. È possibile impostare una porta di inoltro locale per accedere a un servizio (ad esempio un database) su un server remoto. Il database sul server non è esposto all'interfaccia di rete pubblica, ma è possibile creare un tunnel da un computer locale alla porta interna del database server. È quindi possibile connettersi a localhost e tutto il traffico verrà inoltrato attraverso il tunnel SSH al database remoto.
È possibile utilizzare l'inoltro inverso della porta per concedere a una persona esterna alla rete locale l'accesso a un servizio interno. Ad esempio, potrebbe essere necessario mostrare a un altro sviluppatore un'applicazione Web sviluppata sul computer locale. Poiché il computer non dispone di un IP pubblico, l'altro sviluppatore non può accedere all'applicazione tramite Internet. Tuttavia, se si ha accesso a un server SSH remoto, è possibile impostare l'inoltro inverso della porta per fornire l'accesso allo sviluppatore.
Configura inoltro porta sul server
Per configurare l'inoltro delle porte SSH:
- Da una riga di comando, utilizzando i privilegi amministrativi, connettersi all'istanza utilizzando SSH.
- Modificare il file
/etc/ssh/sshd_config
. Verificare almeno i seguenti parametri:-
AllowTCPForwarding
Consente l'inoltro della porta TCP. Se omesso, il valore predefinito è
yes
, che abilita la porta TCP singola in avanti e il proxy SOCKS AllowStreamLocalForwarding
Consente l'inoltro dei socket di dominio UNIX. Se omesso, l'impostazione predefinita è
yes
.
-
Inoltro porta locale
L'inoltro della porta locale su SSH mappa una porta locale sul sistema client a una porta remota sul sistema server. Questa configurazione consente di accedere ai servizi sul sistema remoto che sono altrimenti inaccessibili in quanto i servizi potrebbero essere in esecuzione dietro un firewall o potrebbero non essere in ascolto su un'interfaccia di rete pubblica.
Per creare un tunnel di inoltro TCP diretto, utilizzare l'opzione ssh -L
:
ssh -L <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
bind_address
Facoltativo e assegna un'interfaccia locale per l'ascolto delle connessioni. Se omesso, ssh si associa solo alle interfacce di loopback. Per eseguire l'associazione su tutte le interfacce, è possibile utilizzare "0.0.0.0" o "::".
port
Il numero della porta locale. È possibile utilizzare un numero di porta qualsiasi maggiore di
1024
.destination
IP o nome host del computer di destinazione. Se la destinazione si trova sul server remoto stesso, è possibile utilizzare
localhost
.destination_port
Porta sul computer di destinazione.
user@remote_ssh_server
L'utente SSH remoto e l'indirizzo IP del server.
Ad esempio:
ssh -L <8080>:localhost:<8888> <user>@<129.145.0.164>
Questa operazione apre una connessione SSH al server remoto in 192.168.1.20 e apre un tunnel alla porta localhost 8888.
Inoltro porta dinamico
Utilizzare l'inoltro dinamico delle porte per far sì che il client SSH ascolti su una porta di associazione specificata e agisca come server proxy SOCKS. Non è necessario specificare un host di destinazione come tutte le connessioni in entrata sulla porta specificata in avanti attraverso il tunnel a una porta dinamica sul computer di destinazione.
Per creare una porta dinamica in avanti, utilizzare l'opzione ssh -D
.
ssh -D <bind_address>:<port> <user>@<remote_ssh_server>
Inoltro porta inverso
Un tunnel inverso inoltra qualsiasi connessione ricevuta sul server SSH remoto alla rete client locale.
Per creare una porta inversa in avanti, utilizzare l'opzione ssh -R
.
- Per l'inoltro inverso della porta locale:
ssh -R <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
- Per l'inoltro inverso della porta dinamica:
ssh -R <bind_address>:<port> <user>@<remote_ssh_server>
Accesso remoto alle applicazioni basate su X11 tramite SSH
L'inoltro X11 consente di utilizzare una connessione SSH per avviare un'applicazione grafica basata su X11 su un sistema Oracle Linux remoto e utilizzarla da un sistema locale. Il sistema remoto non deve avere un server X11 o un ambiente desktop grafico in esecuzione, ma il sistema locale deve avere un servizio compatibile con X11 in esecuzione.
Abilita inoltro X11 sul server remoto
- Da una riga di comando, utilizzando i privilegi amministrativi, connettersi all'istanza utilizzando SSH.
- Abilitare
X11Forwarding
nel file/etc/ssh/sshd_config
.Se
X11Forwarding
viene omesso da/etc/ssh/sshd_config
, l'impostazione predefinita èno
. Per abilitare l'inoltro X11, aggiungere una voce che imposti il valore di questo parametro suyes
.X11Forwarding yes
- Installare i pacchetti X11:
dnf install xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11
Se non è mai stata eseguita un'applicazione grafica sul server remoto, la prima volta che si esegue la connessione al server remoto mediante l'inoltro X11 viene visualizzato un messaggio di avvertenza:/usr/bin/xauth: file /home/user/.Xauthority does not exist
È possibile ignorare questo avviso come . Il file Xauthority viene creato automaticamente.
- Riavviare il servizio
sshd
per rendere effettiva la modifica:sudo systemctl restart sshd.service
Avviare un'applicazione in remoto utilizzando l'inoltro X11
- Eseguire il login al server remoto utilizzando SSH:
ssh -X <user>@<server1.example.com> The authenticity of host 'remote-server (192.168.122.120)' can't be established. ECDSA key fingerprint is SHA256:uYwFlgtP/2YABMHKv5BtN7nHK9SHRL4hdYxAPJVK/kY. Are you sure you want to continue connecting (yes/no/[fingerprint])?
- Immettere sì.
Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
- Avviare un'applicazione grafica sul server remoto che viene visualizzata sul sistema locale. Ad esempio, per eseguire un editor di testo grafico come
gedit
, immettere:L'aggiunta digedit &
&
(e commerciale) alla fine esegue l'applicazione in background, liberando il terminale per altri comandi.