SSH

Da Andreabont's Wiki.

SSH (Secure SHell) è un protocollo che permette la comunicazione sicura tra sistemi UNIX, nasce per la login remota da linea di comando, ma si è evoluta anche per funzionalità più avanzate, come il trasferimento di file o la creazione di tunnel di rete.

Certificati

SSH supporta l'autenticazione attraverso certificati.

Usare il Token per loggarsi

La librerie può essere trovata spesso sotto /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so, per maggiori informazioni consultare qui.

ssh -I <Path_libreria> <host>

Usare una chiave privata specifica per loggarsi

ssh -i <Path_chiave> <host>

Tunnel

SSH permette di creare a piacimento un tunnel tra la propria macchina e una macchina remota attraverso il quale far passare pacchetti TCP. (Attenzione! UDP non è supportato!)
L'uso di questa funzionalità va dalla protezione di un protocollo non sicuro (ssh usa sempre connessioni cifrate) all'aggiramento di firewall e NAT.

Binding diretto di una porta

Il binding diretto di una porta permette di instradare tutto il traffico da e per una porta locale attraverso il tunnel ssh verso una macchina remota. Da li il traffico viene ridirezionato verso un host e una porta specificata.
Nell'esempio sotto indicato la porta locale 12345 manderà pacchetti verso serverremoto.it e da lì verranno ridirezionati verso google.it sulla porta 80.
Questa configurazione è ideale per aggirare eventuali blocchi firewall verso uno specifico host e/o porta.

ssh -Nt -L 12345:google.it:80 username@serverremoto.it

Binding inverso di una porta

Il binding inverso permette di redirezionare il traffico di una porta di una macchina remota attraverso il tunnell ssh verso la macchina locale. Da qui il traffico viene ridirezionato verso un host e una porta specificata.
Nell'esempio tutto il traffico della porta 8000 di serverremoto.it manderà i pacchetti verso la macchina locale e da lì li invierà sulla porta 80 della macchina locale.
Questa configurazione è ideale per poter essere raggiunti dall'esterno pur essendo sotto NAT.

ssh -Ntg -R *:8000:localhost:80 username@serverremoto.it

Proxy

Con questa modalità verrà creato un proxy SOCKS 5 sulla porta locale 9999 che instraderà tutti i pacchetti su serverremoto.it che da lì continueranno l'instradamento verso la loro destinazione.
Attenzione! Un proxy non è una VPN, verranno instradati solo i pacchetti dei software che supportano (e hanno configurato) il proxy.

ssh -Nt -D 9999 username@serverremoto.it