Come utilizzare SSH fuori dalla rete domestica


15

Di recente ho configurato SSH sul mio Raspberry Pi. Sta andando a gonfie vele, soprattutto da quando posso controllare il computer tramite il mio iPhone con l'app Server Auditor . Purtroppo, questo funziona solo attraverso la rete locale.

Come posso far funzionare il mio SSH quando sono fuori casa? (Preferibilmente funziona con l'app.)


puoi inoltrare una porta dal tuo router?
SteveIrwin

1
@SteveIrwin Probabilmente posso, ma dal momento che non sono esperto di networking, preferirei una soluzione semplice come Port Map . In realtà ... se condividessi Internet del mio Mac con il mio Pi, sarei in grado di condividere le porte inoltrate?
xxmbabanexx,

1
la configurazione di un port forward è probabilmente altrettanto semplice quanto l'utilizzo di Port Map. Devi dirci di più su come è impostata la tua LAN
John La Rooy,

La tua scommessa migliore è installare il servizio Weaved (www.weaved.com) e farlo con esso. Tutti gli altri tutorial che troverai su Internet ti guideranno lungo una strada frustrante.
IgorGanapolsky,

per il post che suggerisce l'uso di socketxp usare quanto segue per scaricare socketxp nel ricciolo RPI -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin invece di linux file.
Jeonghoon,

Risposte:


20

Ecco i passaggi che ho usato (su debian) che potresti trovare utili.

1.Impostazione dell'IP statico per il Pi.

a. Aprire il file delle interfacce usando il comando

sudo nano /etc/network/interfaces

b.Cambia il file delle interfacce nel modo seguente (Funziona per me, non sono sicuro che alcune righe possano essere escluse).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c.Verificare se l'IP è cambiato usando il comando ifconfig

2.Impostazione di un DNS dinamico

Molto probabilmente l'indirizzo IP assegnato dal tuo ISP è dinamico e quindi abbiamo bisogno di un modo per risolvere i cambiamenti nell'indirizzo IP. Per raggiungere questo scopo, per farlo, utilizzo software dnsdynamic e ddclient. Entrambi sono gratuiti.

a. Iscriviti per un account con dnsdynamic

b.Aggiungere un nuovo dominio e selezionare un nome e il dominio dall'elenco. È possibile scegliere uno qualsiasi dei domini disponibili con il sottodominio desiderato. Fare clic su Verifica disponibilità e quindi aggiungere

screenshot di dnsdynamic

3.Impostazione di ddclient su Pi

a. Installare ddclient usando il comando

sudo apt-get install ddclient

b.Aprire il file di configurazione per ddclient usando il comando seguente e aggiungere le seguenti righe.

sudo nano /etc/ddclient.conf

e cambia il file nel seguente.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
login=x@gmail.com  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

e salva il file.

d. Vogliamo che il servizio ddclient si avvii automaticamente al riavvio, quindi procedi come segue.

sudo nano /etc/rc.local

Aggiungi il seguente comando prima di uscire da 0 (che è l'ultima riga)

sudo /usr/sbin/ddclient -daemon 600 -syslog

Salvare il file. Per avviare ddclient, riavviare pi o eseguire il comando sopra sul prompt. Manterrà aggiornato il nome del dominio con l'attuale indirizzo IP che cambia quando necessario.

4.Inoltro di porte

a. Trova il modello del tuo router.

b. Vai su portforward.com

c. Immettere la marca e il modello del router per trovare la guida dettagliata sulla porta di inoltro.

d. Dopo aver selezionato la marca e il modello del router, fare clic sulla Guida predefinita dalla pagina reindirizzata.

e. Nella casella di testo IP statico , inserisci l'IP statico del Pi che hai indicato nel passaggio 1.

f) Seguire i passaggi e inoltrare la porta 22.La porta di origine deve essere 22 e la porta di destinazione può essere qualsiasi. Ricordarsi di utilizzare la porta di destinazione quando si entra nel pi.Per evitare confusione, tendo a utilizzare la stessa sorgente e destinazione porta.

Se stavi seguendo il tutorial, accedi al tuo pi da qualsiasi luogo utilizzando la sostituzione dell'indirizzo IP con il nome di dominio. ad es. uso pi@hometorrent.dnsdynamic.com: 22 per scrivere nel mio pi.


Grazie mille! Quando torno da Exeter, lo proverò!
xxmbabanexx,

+1 Ottima risposta, tuttavia, è davvero necessario utilizzare sudoin /etc/rc.local, non è già in esecuzione come root?
Heatfan John,

Quindi ho completamente rovinato le mie configurazioni Ngrok e Weaved. Ora non riesco a collegarmi affatto!
IgorGanapolsky,

2

Per prima cosa ti consigliamo di impostare il port forwarding. Ogni router è leggermente diverso, quindi dovrai cercare le specifiche per il tuo router.
Esistono guide pratiche per il port forwarding che possono funzionare per la maggior parte dei router, ma suggerirei di trovare una guida per il tuo modello di router attuale.

Imposta una porta memorabile per collegarti al tuo Raspberry Pi, come 23456 o qualcosa del genere. Fare attenzione a non sovrascrivere i numeri di porta comuni .

Infine, usando ssh procedi come segue:

$ ssh -p 23456 user@IP

Dove:


Perché non posso usare la porta 22 invece del 23456 personalizzato?
IgorGanapolsky,

1
@IgorGanapolsky puoi farlo, ma 1) se hai un altro computer a cui vorresti connetterti tramite SSH al di fuori della tua casa, ci sarà un conflitto e 2) più rischioso poiché molti "hacker" provano ad accedere attraverso la porta 22 , quindi la chiusura è spesso consigliata sui server
meneldal

2

Accedere a RaspberryPi (o persino laptop / server) dall'esterno della rete domestica (ovvero da Internet) non è un compito facile, perché il laptop domestico o RaspberryPi ha solo un indirizzo IP locale (nell'intervallo 10.xxx o 192.168.xx gamma). Non ha un indirizzo IP pubblico visibile da Internet.

La semplice risposta alla tua domanda è utilizzare servizi online gratuiti come SocketXP che fornisce un endpoint tunnel pubblico sicuro a SSH nel tuo RaspberryPi dall'esterno della rete domestica.

SocketXP offre un modo semplice, sicuro e facile per accedere a RaspberryPi di casa dalla rete esterna. SocketXP non richiede di hackerare alcuna impostazione nel tuo router WiFi. Funziona fuori dalla scatola. Per sapere come configurare RaspberryPi su SSH dall'esterno, leggi questo blog su come remotare SSH su RaspberryPi usando SocketXP.

Come configurare SocketXP:

Step1 : Installa il client SocketXP sul tuo RaspberryPi usando il seguente comando.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

Passaggio 2: Connettere il client SocketXP al servizio cloud SocketXP usando il comando seguente. È necessario registrarsi su https://portal.socketxp.com per ottenere il proprio token di autenticazione unico.

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

Fase 3 : ottenere un endpoint del tunnel pubblico per accedere a RaspberryPi da Internet.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

Step4 : SSH nel tuo RaspberryPi da Internet usando il seguente comando.

$ ssh raspberry-username@tunnel.socketxp.com -p 35277

dove "raspberry-username" è il nome utente / password che usi per accedere a SSH su RaspberryPi.


1

Questa domanda è vecchia, col passare del tempo ci sono meno possibilità che tu ottenga un indirizzo IPv4 accessibile al pubblico. Molto probabilmente sei dietro un CGNAT, il che significa che condividi un singolo IPv4 pubblico con altri clienti dell'ISP. Quindi non è possibile effettuare un port forwarding al proprio PI o altro.

Se disponi di IPv6, puoi assegnare al tuo IP un indirizzo statico e consentirne l'accesso sul router. Molti provider di telefonia mobile ora forniscono IPv6 ai telefoni. I vecchi ISP "terrestri" (Fiber, DSL, coax ecc.) Spesso trascinano i piedi.

Potresti anche ottenere un VPS (server privato virtuale) economico con un IPv4 pubblico da qualche parte nel cloud e creare un tunnel SSH dal PI al VPS.


0

Oltre alla risposta di Phalt, dovresti dare un'occhiata a uno dei servizi DNS dinamici, come No IP . Ti consentono di accedere alla tua rete domestica con un nome host statico, sebbene il tuo indirizzo IP possa cambiare quotidianamente, a causa della disconnessione del tuo DSL o del tuo provider via cavo. Hanno anche una bella pagina per iniziare , che ti introduce anche alla configurazione del router di conseguenza.

È possibile che si desideri installare il inadynpacchetto su Raspberry Pi per aggiornare le voci DNS No-IP quando l'IP cambia. Puoi farlo eseguendo:

sudo apt-get install inadyn

Da inadyn README ho preso questa chiamata di esempio:

inadyn --dyndns_system default@no-ip.com -u USER-p PASS -a HOST

Spero che sia di aiuto.


No-Ip ha un DUC (client di aggiornamento dinamico), che assicurerà che il tuo indirizzo IP non cambi.
IgorGanapolsky,

0

In aggiunta alla risposta di Steve Irwin:

Passo 1:

se ti connetti tramite wlan, usa:

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

Passo 2:

dopo aver modificato quanto sopra, è necessario riavviare networking:

sudo /etc/init.d/networking restart

Ho anche aggiunto 2 righe davanti al blocco statico, auto wlan0 allow-hotplug wlan0 L'ho trovato in questo post raspberrypi.stackexchange.com/a/10320/10148 Ho anche provato a farlo senza di loro ma qualcosa non ha funzionato.
XandruCea,

Questa risposta dovrebbe essere considerata obsoleta a causa di cambiamenti nella configurazione di rete di Raspbian e nel sistema init.
riccioli d'oro

0

Inoltre, alcuni router hanno il supporto integrato per alcuni servizi DNS dinamici, è possibile abilitare questa opzione (se esiste) nel router per evitare di installare il client sul PI (e salvare un piccolo overhead mentre ci si trova).


0

Quindi, hai un server ssh (il tuo Raspberry PI) dietro un firewall (il tuo router) e vuoi connetterlo da qualsiasi luogo. Supponiamo che il tuo server SSH sia configurato correttamente, cioè eseguendo "nome utente ssh @ data host" sul tuo Raspberry mostra la data / ora corrente.

Devi risolvere due problemi:

  • Il router deve inoltrare una porta fissa alla porta raspberry ssh (in genere 22).
  • È necessario conoscere l'indirizzo IP pubblico del router (che di solito cambia al momento della riconnessione del router e anche una volta ogni 24 ore).

Port Forwarding e DynDNS

Esistono soluzioni (come è stato sottolineato da altri):

Se configurato correttamente, il collegamento di rasbperry pi potrebbe essere possibile con:

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh username@myname.dyndns.org -p [port]

Utilizzando sshhub.de

Un'altra soluzione molto conveniente, non menzionata finora, è SSHHub (divulgatore, sono l'autore). Utilizza l'inoltro di ssh per accedere al tuo Rasperry PI da qualsiasi luogo. È affidabile, gratuito e abbastanza semplice da configurare . Registrati una volta:

ssh info@sshhub.de register

corri sul tuo Raspberry PI:

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

... e questo è tutto! Puoi connettere il tuo Raspberry Pi da qualsiasi luogo:

ssh -J [username]@sshhub.de localhost

Ciao e benvenuto su Raspberry Pi! Fai il tour e visita il centro assistenza per vedere come funzionano le cose qui. Grazie per il tuo contributo, ma ti preghiamo di notare che ti chiediamo gentilmente di rivelare la tua affiliazione nelle tue risposte . (Presumo che tu sia l'autore del software consigliato.)
Ghanima

Grazie per avermi indicato nella giusta direzione. Sono l'autore Voglio certamente fornire valore alla mia risposta per le persone che cercano una soluzione. E spero che lo faccia anche me stesso.
Oliver

0

Puoi utilizzare una VPN per abilitare l'accesso in entrata al tuo pi. OpenVPN è una soluzione, che richiederebbe di avere un computer accessibile da Internet (una porta in entrata). Tuttavia, fintanto che si dispone di un computer accessibile, non è necessario che gli altri computer siano come client sul server OpenVPN.

Un'altra opzione sarebbe quella di utilizzare un servizio come ZeroTier, che fornisce server centralizzati per la creazione di una VPN, quindi non è necessario eseguire il proprio server. Anche questo è gratuito.


Un'altra ottima opzione è usare wireguard .
Ingo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.