Aggiornato 29-3-2017
Vediamo come realizzare un reverse tunnel ssh persistente, utile per raggiungere il nostro raspberry, o pc linux, dietro nat. Per lo scopo bisogna avere un ddns registrato e funzionante sull'ip della rete raggiungibile oppure un ip statico. Il servizio gratuito offerto da no-ip.com va più che bene, ma bisogna confermarlo mensilmente, almeno nella versione libera. Registratevi e aggiungete un host scegliendo un nome a vostro piacere.
Per aggiornare l'ip del ddns ricordatevi di configurarlo nel vostro router adsl oppure eseguite il client DUC windows, client DUC linux, da un pc dalla vostra rete locale.
Vediamo come realizzare un reverse tunnel ssh persistente, utile per raggiungere il nostro raspberry, o pc linux, dietro nat. Per lo scopo bisogna avere un ddns registrato e funzionante sull'ip della rete raggiungibile oppure un ip statico. Il servizio gratuito offerto da no-ip.com va più che bene, ma bisogna confermarlo mensilmente, almeno nella versione libera. Registratevi e aggiungete un host scegliendo un nome a vostro piacere.
Per aggiornare l'ip del ddns ricordatevi di configurarlo nel vostro router adsl oppure eseguite il client DUC windows, client DUC linux, da un pc dalla vostra rete locale.
Cominciamo, per prima cosa apriamo la porta 22 ssh verso l'esterno sul router adsl della connessione raggiungibile, impostando, allo stesso tempo, un ip statico al pc linux nella nostra rete locale. Installate su quest'ultimo ssh server.
Se il router non consente la personalizzazione di porta interna esterna, potrete reimpostarla nel file di configurazione del server ssh /etc/ssh/sshd_config Bisogna riavviare ssh per confermare la modifica: sudo service ssh restart.
Adesso configuriamo il raspberry nella rete non raggiungibile, telefonia mobile:
Creiamo una coppia di chiavi ssh senza password:
- ssh-keygen
Aspettate qualche istante, date invio al prompt. Ancora invio e invio, lasciando la passphrase vuota.
Adesso copiamo la chiave pubblica appena creata, dal raspberry al pc con ip pubblico.
- ssh-copy-id "user@my-public-ddns -p 4725"
Inserite la password. se non otterrete errori, la chiave è stata copiata con successo.
Facciamo adesso una prova di connessione ssh dal raspberry della rete non raggiungibile al pc nella rete raggiungibile:
- ssh -p 4725 user@my-public-ddns
Se accedete al pc raspberry senza richiesta di password avete eseguito fin qui tutto correttamente, se così non è, verificate i passaggi precedenti.
Creiamo adesso il reverse tunnel dal raspberry nella rete non raggiungibile verso il pc con ip pubblico raggiungibile:
- ssh -N -R 3700:localhost:22 user@my-public-ddns -p 4725
In ordine, partendo dalla fine, le porte sono:
- 4725 Porta ssh del pc remoto con ip pubblico
- 22 Porta del raspberry nella rete non raggiungibile da traslare, in questo caso la 22, ssh server
- 3700 Porta traslata disponibile sul pc con ip pubblico
- ssh -p 3700 user@127.0.0.1
- ssh -l user -p 3700 127.0.0.1
- ctrl+d sul pc per chiudere il tunnel
- ctrl+c sul raspberry per chiudere il reverse tunnel ssh appena creato
Adesso creiamo il tunnel all'avvio del raspberry. Per prima cosa facciamo che resti attivo, in vita, una volta creato:
Modifichiamo i file di configurazione del client e server ssh sia sul pc che sul raspberry:
Rendiamolo eseguibile con:
Buon divertimento.
Modifichiamo i file di configurazione del client e server ssh sia sul pc che sul raspberry:
- sudo nano /etc/ssh/sshd_config
- ClientAliveInterval 30
- sudo nano /etc/ssh/ssh_config
- ServerAliveInterval 15
- nano tunnel.sh
- #!/bin/bash
- ps -A x |grep "ssh -N -R 3700:localhost:22 user@my-public-ddns -p 4725" |grep -v grep > /dev/null 2>&1
- if [[ $? -eq 1 ]]; then
- ssh -N -R 3700:localhost:22 user@my-public-ddns -p 4725 &
- fi
Rendiamolo eseguibile con:
- chmod +x tunnel.sh
- crontab -e
- */1 * * * * ~/tunnel.sh > /dev/null 2>&1 &
Buon divertimento.
Nessun commento:
Posta un commento