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.

È 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:

  1. Da una riga di comando, utilizzando i privilegi amministrativi, connettersi all'istanza utilizzando SSH.
  2. 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

  1. Da una riga di comando, utilizzando i privilegi amministrativi, connettersi all'istanza utilizzando SSH.
  2. 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 su yes.

    X11Forwarding yes
  3. 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.

  4. Riavviare il servizio sshd per rendere effettiva la modifica:
    sudo systemctl restart sshd.service

Avviare un'applicazione in remoto utilizzando l'inoltro X11

  1. 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])?
  2. Immettere .
    Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
  3. 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:
    gedit &
    L'aggiunta di & (e commerciale) alla fine esegue l'applicazione in background, liberando il terminale per altri comandi.