Auto SSH

A tutti sarà capitato di dover accedere a un linux remoto ma di non avere la possibilità in quanto è dietro un firewall a cui non si ha accesso oppure sta dietro un ip dinamico o un nat di qualche operatore. La soluzione hai vs. problemi è Autossh.

Per utilizzare autossh devi avere a disposizione una macchina linux accessibile e un IP publico su cui indirizzare le chiamate.

Vediamo un esempio basato su CentOS 7 ecco lo scenario:

  • Server da controllare “SVR1” con ip dinamico;
  • Pc di gestione “Gest1” con ip interno 100.100.100.100;
  • Firewall con IP Pubblico 100.200.300.2 nella sede di Gest1;
Sul Firewall configurare il nat in modo da reindirizzare la porta 222 del 100.200.300.2 sulla porta 22 di Gest1
Su SVR1 eseguire i seguenti comandi

yum install autossh -y
poi eseguire
ssh-keygen

Alla prima richiesta, quella del nome del certificato inserire: nopwd_SVR1
Alla seconda richiesta vi verrà chiesto di inserire la password del certificato. Non inseritela e premere invio due volte

Installare il certificato su Gest1 con il seguente comando da SRV1
ssh-copy-id -i nopwd_SVR1.pub -p 222 root@100.200.300.2
alla richiesta di password inserire la password root di Gest1

Una volta caricato il certificato il gioco è fatto eseguire il seguente comando

autossh -M 0 -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -i /root/nopwd_SRV1 -N -R 20000:localhost:22 root@10.200.300.2 -p 222

Vi verrà richiesto di accettare la connessione. Una volta accettato se tutto è andato bene SRV1 avrà creato una connessione di reverse SSH su Gest1. Per verificare eseguire su Gest1 il seguente comando

ssh localhost -p 20000
vi comparirà la richiesta di login inserire login e password di SRV1.


Questo metodo è molto affidavile e puo essere caricato come servizio in esecuzione automatica.

Una precisazione la porta 20000 usata nell’esempio identifica in Gest1 il server SRV1. Nel caso voleste usare Gest1 come concentratore di servizi per più server dovete assegnare ad ogni server una porta diversa considerando che ogni server utilizza la porta indicata e quella successiva. Di conseguenza SRV2 dovrà avere la porta 20002 SRV3 la porta 20004 e così via.

Buona Giornata

Tags: