Diamo per scontato di sapere cosa sia e come utilizzare il comando ssh per connetterci normalmente ad un server.
Definizioni iniziali
Supponiamo di aver a disposizione un server “mioserver” dove poterci collegare con l’utente “mioutente“, magari dopo aver attivato la vpn della server farm.
Quindi ci connetteremo con il comando
ssh mioutente@mioserver
Chiave pubblica e privata del comando ssh
Se non abbiamo ancora creato le nostre chiavi pubbliche/private ssh direi che è l’ora di farlo tramite il comando
ssh-keygen
Le chiavi create sono sotto $HOME/.ssh/id* e le pubbliche finiscono con .pub
A questo punto il client ssh durante la connessione tenterà prima di connettersi con la chiave e se non è possibile (perché nel server non c’è) utilizzerà l’autenticazione successiva disponibile.
Per copiare la chiave sul server “mioserver” bisogna prima aggiungere la chiave pubblica nell’agente di autenticazione ssh (ssh-agent).
Supponiamo che l’agente sia stato attivato automaticamente dalla sessione grafica (gnome o kde lo fanno automaticamente), controlliamo che sia attivo con il comando
pgrep ssh-agent
Nel caso non lo sia utilizziamo una shell che lo racchiude tramite il comando:
ssh-agent /bin/bash
A questo punto aggiungiamo, sbloccandola, la chiave ssh
ssh-add
Per importare la chiave sull’host “mioserver” utilizziamo il comando
ssh-copy-id mioutente@mioserver
Cambio password privata
Supponiamo di voler ad un certo punto cambiare la password della chiave privata. Basta il semplice comando
ssh-keygen -p
Come lanciare un comando ssh remoto
Per lanciare un comando remoto basta passarlo come ultimo parametro al comando ssh.
Supponiamo ad esempio di volere la lista dei file della home page di “mioutente” su “mioserver”
ssh mioutente@mioserver ls -alh
Per fare, invece, il backup di tutta la home con il comando tar e salvare tutto in locale tramite comando ssh, lanciamo
ssh mioutente@mioserver tar czvf - . >miobackup.tgz
Utilizzare ssh come server/proxy SOCKS5
Supponiamo di voler utilizzare “mioserver” come server/proxy SOCKS5 e configurarlo sul browser locale
ssh mioutente@mioserver
mioutente@mioserver:~$ ssh -N -D 8080 localhost
A questo punto basta configurare nel browser l’utilizzo del server “mioserver” su porta “8080” come SOCKS5 e navigare.
Aggiungere l’opzione “-f” di ssh per lasciare il comando in background.
Come redirigere una connessione remota in locale tramite ssh
Supponiamo che l’host “mioserver” sia autorizzato ad accedere su una DMZ al server mysql della server farm, per poter accedere direttamente anche con il computer locale al server mysql possiamo lanciare il comando
ssh -L 3333:mysql_server_name_o_ip:3306 mioutente@mioserver
Lasciando il comando attivo ora abbiamo un canale/tunnel criptato tra il computer locale e “mioserver” sulla porta locale 3333 che si connette direttamente al server mysql in DMZ (di nome mysql_server_name_o_ip).
Possiamo quindi connetterci direttamente al server mysql con il comando
mysql -P 3333 -h 127.0.0.1 -u mioutentemysql -p miodatabasemysql
Oppure se si preferisce utilizzare phpMyAdmin basta installarlo in locale e configurarlo sulla porta locale 3333.
Per togliere il canale criptato basta chiudere la connessione ssh.
Redirigere un servizio locale in remoto
Supponiamo di volerci connetterci da casa al pc dell’ ufficio (che può accede al server “mioserver” in server farm) non raggiungibile nemmeno in VPN; basta che dal pc di ufficio lanciamo il comando ssh:
ssh -N -f -R 2222:localhost:22 mioutente@mioserver
lasciandolo attivo (senza spegnere il computer).
Da casa basta abilitare la VPN per poter raggiungere “mioserver” e connettersi al server
ssh mioutente@mioserver
mioutente@mioserver:~$ ssh -P 2222 utente_pc_lavoro@localhost
utente_pc_lavoro@localhost:~$
In tal modo si riesce ad entrare nel pc dell’ufficio da casa.