GNU/Linux >> Linux Esercitazione >  >> Linux

Accesso SSH all'host dell'ufficio dietro il router NAT

[email protected]$ autossh -R 12345:localhost:22 [email protected]

Più tardi:

[email protected]$ autossh -L 23456:localhost:12345 [email protected]

[email protected]$ ssh [email protected] -p 23456

Quello che potresti fare è questo:nel passaggio 1 inoltra una porta remota dal PC dell'ufficio al server (12345 è usato come esempio, dovrebbe andare bene qualsiasi porta>1024). Ora connettendoti a 12345 sul server dovresti connetterti alla porta 22 su officepc.

Nel passaggio 2, inoltra la porta 23456 dal computer di casa alla 12345 sul server (da qui viene inoltrata a officepc:22, come impostato nel passaggio 1)

Al passaggio 3, ti connetti alla porta locale 23456 con il login del PC dell'ufficio . Questo viene inoltrato al passaggio 2 alla porta 12345 sul tuo server e al passaggio 1 al PC dell'ufficio.

Nota che sto usando autossh per gli inoltri, poiché è un wrapper ssh che riconnette automaticamente il tunnel se viene disconnesso; comunque funzionerebbe anche il normale ssh, purché la connessione non si interrompa.

C'è una possibile vulnerabilità:chiunque possa connettersi a localhost:12345 su serverpc ora può connettersi a officepc:22 e provare ad hackerarlo. (Nota che se stai utilizzando un server SSH, dovresti comunque proteggerlo al di sopra delle protezioni di base che sono attive per impostazione predefinita; ti consiglio di disabilitare almeno l'accesso root e disabilitare l'autenticazione con password - vedi ad esempio questo)

Modifica :L'ho verificato con la stessa configurazione e funziona. GatewayPorts no riguarda solo i porti aperti al mondo in generale, non i tunnel locali. Ecco cosa sono le porte inoltrate:

homepc:
  outgoing ssh to serverpc:22
  listening localhost:23456 forwarded through ssh tunnel
serverpc:
  listening ssh at *:22
  incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
  listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
  outgoing ssh to serverpc:22
  incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22

Quindi, per quanto riguarda lo stack di rete, è tutto il traffico locale sulle rispettive interfacce di loopback (più le connessioni ssh a serverpc); pertanto, GatewayPorts non è selezionato affatto.

Esiste, tuttavia, la direttiva AllowTcpForwarding :se questo è no , questa configurazione fallirà poiché non è consentito alcun inoltro, nemmeno attraverso l'interfaccia di loopback.

Avvertenze :

  • se usi autossh e ssh recente, potresti voler usare ServerAliveInterval di ssh e ServerAliveCountMax per mantenere in piedi il tunnel. Autossh ha un controllo integrato, ma a quanto pare ha alcuni problemi su Fedora. -M0 lo disabilita e -oServerAliveInterval=20 -oServerAliveCountMax=3 controlla se la connessione è attiva - prova ogni 20 secondi, se fallisce 3 volte di seguito, interrompe ssh (e autossh ne crea uno nuovo):

    autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
    autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
  • potrebbe essere utile riavviare il tunnel ssh se il forward fallisce, usando -oExitOnForwardFailure=yes - se la porta è già collegata, potresti ottenere una connessione SSH funzionante, ma nessun tunnel inoltrato.

  • usando ~/.ssh/config per le opzioni (e le porte) è consigliabile, altrimenti le righe di comando diventano troppo prolisse. Ad esempio:

    Host fwdserverpc
        Hostname serverpc
        User notroot
        ServerAliveInterval 20
        ServerAliveCountMax 3
        ExitOnForwardFailure yes
        LocalForward 23456 localhost:12345
    

Quindi puoi utilizzare solo l'alias del server:

    autossh -M0 fwdserverpc

Se puoi ssh al server interno da casa e dal server interno alla macchina Linux dell'ufficio, allora da casa puoi usare ssh ProxyCommand per rimbalzare silenziosamente attraverso il server alla macchina interna tramite nc (netcat)

# ~/.ssh/config on your home machine:
Host internalpc 
   ForwardAgent yes 
   ProxyCommand ssh [email protected] exec nc internal.pc.example.com %p

Quindi devi solo ssh [email protected] e sei silenziosamente inoltrato attraverso la macchina server, nessuna apertura di porte o tunnel richiesta su entrambe le estremità.


Installa Robo-TiTO nel computer a cui desideri accedere tramite SSH da remoto.

  • Ciò ti consentirà di accedere a SSH utilizzando le app client di Google Talk ovunque.
  • Non è necessario un indirizzo IP pubblico o un'impostazione speciale.
  • È gratuito e open source, non paga più alcun servizio applicativo.
  • Non è necessario aprire la porta SSH (proteggi il tuo computer).
  • Non è necessario aprire alcun tunneling (ad es. VPN o qualcosa del genere)

Le seguenti istruzioni di installazione sono obsolete, poiché il sito è stato spostato. Il nuovo URL è https://github.com/formigarafa/robotito

Ho creato uno script (testato sul mio sistema operativo Raspbian in Raspberry Pi) in modo da poter installare facilmente Robo-TiTO su Raspberry Pi, Debian o Ubuntu Box (distribuzione del pacchetto Debian). questi sono i passaggi per ottenere il tuo Linux box telecomandabile:

  1. Apri Shell Command o puoi chiamarlo Terminale, vai alla tua cartella home, scarica lo script di installazione tramite comando:

    $ wget https://opengateway.googlecode.com/files/robotito
    
  2. quindi eseguire lo script immettendo command:

    $ sudo ./robotito
    
  3. e quindi puoi modificare il file credentials.rb dalla cartella config di Robo-TiTO usando il tuo account GTalk e salvalo premendo Ctrl +X e Y . L'impostazione predefinita utilizza l'editor nano.

  4. eseguire Robo-TiTO dalla cartella Robo-TiTO tramite comando

    $ cd robotito
    $ ./jabbershd start
    
  5. Ora che questo è fatto puoi usare SSH da qualsiasi client Google Talk. Non dimenticare di aggiungere l'account Robo-TiTO GTalk al tuo account Google Talk e provalo chattando tra di voi prima di utilizzare l'account.


Linux
  1. Come configurare connessioni SSH personalizzate per semplificare l'accesso remoto

  2. Ssh:limitare un utente Ssh/scp/sftp a una directory?

  3. ssh attraverso un router senza port forwarding

  4. SSH:connessione all'host localhost porta 22:connessione rifiutata

  5. accesso solo tunneling ssh

Come impostare Plesk Panel Runnig dietro un router con NAT?

Limita l'accesso SSH in base all'indirizzo IP

connettersi all'host localhost porta 22:connessione rifiutata

come ssh due computer dietro NAT e Firewall, senza terzo computer

Rsync file tramite host intermedio

Tunnel vpn di accesso remoto SSH