SSH ai computer di casa

18

Ho più macchine a casa che vorrei accedere da scuola usando SSH e VNC. Per farlo ho dato loro degli IP statici:

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Raspberry Pi / Raspbian

So che SSH usa la porta 22, quindi posso inoltrare questa porta a 192.168.1.51:22 sul mio router, ma in questo modo non sarò in grado di accedere a SSH al mio Raspberry Pi. C'è un modo che potrei impostare per essere in grado di accedere a entrambe le macchine?

    
posta acourchesne 20.09.2016 - 05:02

5 risposte

32

Se hai IPv6, non hai nemmeno bisogno di port forwarding! Ottieni semplicemente il tuo indirizzo IPv6 permanente (basato sul tuo indirizzo MAC, quindi è garantito che rimanga lo stesso a meno che il tuo ISP non sappia come funziona IPv6) e usalo per fare il tunnel. Il tuo indirizzo IPv6 è pubblico e consente al mondo per accedere a te senza dover passare attraverso il tuo NAT locale, non devi preoccuparti di abilitare port forwarding ovunque. "Funzionerà".

Nota, tuttavia, che IPv6 non è ancora realmente supportato a livello globale, e sia la tua connessione Internet a casa che la connessione internet remota devono avere IPv6 pienamente funzionante per fare ciò.

Tuttavia, se sei come la maggior parte delle persone e hai solo IPv4, c'è ancora un modo! Alcuni router consentono di inoltrare specifiche porte di origine a specifiche porte di destinazione, ad esempio:

In questo esempio, la porta 22 viene passata direttamente alla mia macchina sheepdog , mentre la porta 292 viene inoltrata alla porta 22 su coyote .

Infine, se il tuo router non ha questa funzione, puoi semplicemente cambiare la porta, dato che SSH non è limitato a funzionare solo sulla porta 22 . Puoi impostarlo su qualsiasi cosa tu desideri (che non è in uso).

In /etc/ssh/sshd_config (hai bisogno di root per modificare, quindi sudo nano /etc/ssh/sshd_config ), c'è una riga nella parte superiore del file:

# What ports, IPs and protocols we listen for
Port 22

Cambia questo in quello che vuoi:

# What ports, IPs and protocols we listen for
Port 2992

Riavvia il server SSH con sudo service ssh restart e inoltra la porta sul router.

Tuttavia, per questo caso d'uso, considererei se i tunnel SSH sono la cosa giusta da fare. Forse dovresti configurare un server VPN dedicato sulla tua rete domestica? Ciò ti consentirà di accedere alla tua rete domestica intera da qualsiasi luogo, a condizione che tu abbia le adeguate credenziali di sicurezza necessarie per la VPN. Inoltre, c'è un po 'meno overhead con una VPN; in genere devi solo inoltrare una porta per una macchina.

    
risposta data Kaz Wolfe 20.09.2016 - 05:18
19

Un modo semplice per risolvere questo problema è mappare diverse porte dal tuo router alla porta 22 delle tue macchine. Ad esempio, puoi avere le seguenti impostazioni nel tuo router (supponendo che il tuo router abbia IP 1.2.3.4 )

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Quindi quando usi ssh, specifica la porta che vuoi usare digitando

$ ssh <username>@<router ip> -p <your port>

Ora dovresti riuscire a connetterti a tutte le tue macchine.

    
risposta data Liu Siyuan 20.09.2016 - 08:28
11

Se sai che uno dei tuoi computer è sempre attivo, hai anche la possibilità di usarlo come proxy ssh.

supponiamo che tu abbia una configurazione del nome di dominio per il tuo indirizzo IP esterno (es. myhome.dyndns.com o qualsiasi altra cosa), quello che farai è connettersi su un computer (diciamo che il lampone è sempre attivo e tu inoltra la porta da il tuo router), le tue connessioni ssh saranno:

scuola - & gt; (router, trasparente qui) - & gt; raspberry - & gt; ubuntu o windows

ora, nel tuo ~ / .ssh / config a scuola, aggiungi le linee:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %[email protected]

Per connetterti allora:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh [email protected] (login without password)

Da ora, se si digita ssh ubuntu, il computer si connetterà per la prima volta al raspberry e quindi avvierà una sessione ssh sul computer ubuntu.

Vi raccomando, qualunque sia la porta che avete scelto di inoltrare, per disabilitare la password in /etc/sshd.conf per consentire solo il login tramite la chiave ssh. In questo modo, se si imposta la chiave sul lampone e su ubuntu, con il parametro 'ForwardAgent', sarà necessario solo sbloccare la chiave e quindi non è richiesta alcuna password per la connessione. In questo modo, anche se i bot stanno tentando di accedere al tuo ssh, non saranno mai in grado di effettuare il login poiché non consente l'accesso tramite password.

Bonus, questo funziona anche con scp, scp foo ubuntu: / tmp / foo userà la stessa impostazione senza ulteriori parametri. Bonus 2, questa configurazione non richiede alcun cambiamento a casa, se domani tu e un altro computer, basta copiare / incollare il codice nella tua ssh config, cambiare l'host e l'ip, il gioco è fatto, non c'è bisogno di aprire una nuova porta sul router

    
risposta data potens 20.09.2016 - 16:47
4

Lo faccio - lascio rpi up e collegato direttamente al router tutto il tempo (dato che è il più economico da eseguire) e solo ssh in esso, quindi rimbalzo da esso agli altri - non ha mai bisogno di molta attenzione .

È anche possibile VNC / RDP una GUI su una pipe ssh, un po 'divertente, o inoltrare una porta che ti consente di navigare su un server sul tuo computer desktop mantenendolo privato.

Il motivo per cui ho aggiunto questa risposta è andare a darti alcuni suggerimenti.

1) Usa una porta diversa da 22. Puoi lasciare 22 sul PI, ma cambiare la porta in ingresso sul tuo router a qualcosa di più di 10.000 ... Altrimenti riceverai dozzine di centinaia di attacchi al giorno-- e una volta noto che stai eseguendo un host SSH, il secondo che viene rilevato è un exploit di tua proprietà.

2) Usa i certificati invece di username / password - disabilita completamente il login di username / password.

3) Se il tuo indirizzo IP può cambiare, usa un servizio di tipo dyndns per procurarti un hostham DNS (io uso noip, è gratuito e supportano un client Linux per aggiornare il tuo indirizzo ip - penso che tu possa semplicemente prendilo sul pi ora). Ci sono ancora alcune altre aziende che offrono questo gratuitamente.

4) Mantieni aggiornato il tuo pi (o qualunque cosa tu sia ssh) (sudo apt-get update). Credo che ssh sia abbastanza ben controllato da ora, ma ho anche creduto a quello di https ...

    
risposta data Bill K 20.09.2016 - 19:09
3

Dubitavo che sarebbe stato meglio come commento piuttosto che come risposta, ma lo posterò comunque qui.

Alcune cose a cui dovresti pensare prima di fare questo:

  1. Aprirai i tuoi sistemi a Internet, quindi farai meglio a assicurarti che siano ben corretti e la tua configurazione di sicurezza sia rafforzata (es. non consentire il login di root e usare i pubkey al posto delle password).
  2. Il tuo IP pubblico (vedi whatismyip.com) può cambiare, a seconda del tuo ISP potrebbe cambiare ogni giorno o quasi mai. Ciò significa che dovrai trovare un modo per capire il tuo IP pubblico. Puoi visitare quotidianamente whatismyip.com dalla tua rete domestica, creare qualche app o utilizzare il DNS dinamico (DynDNS) per mappare il tuo IP pubblico modificato a un nome di dominio statico.
  3. Se si desidera utilizzare IPv6 per superare tutti i problemi legati a IPv4 e NATing, è necessario disporre di dispositivi, router, ISP, ... anche per parlare di IPv6. Ci sono alcuni servizi che possono aiutarti quando il tuo ISP non supporta IPv6, ma i tuoi dispositivi e router dovranno comunque parlarne.
  4. Più porte e dispositivi vengono aperti su Internet, più grande diventa l'area di attacco. Ti suggerirei di utilizzare un jump-box nella tua rete e di consentire solo l'accesso SSH a quel dispositivo da Internet. Il jump-box sarebbe fondamentalmente un sistema molto rigido che si porta avanti sul router a Internet. Una volta connesso a quella casella, sarai in grado di connettersi tramite SSH alla tua rete interna. Il jump-box potrebbe essere fondamentalmente un altro Raspberry Pi. Suggerirei di utilizzare un dispositivo dedicato, per poterlo indurire il più possibile (tra gli altri eseguendo il minor numero possibile di servizi).
  5. (4a) Invece di avere un jump-box su SSH, potresti anche configurare un server VPN che ti permetta di esplorare la rete domestica dal tuo dispositivo a scuola (se sono permesse le connessioni VPN in uscita).
risposta data GroundZero 20.09.2016 - 12:25

Leggi altre domande sui tag