GNU/Linux >> Znalost Linux >  >> Linux

SSH přístup ke kancelářskému hostiteli za NAT routerem

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

Později:

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

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

Můžete udělat toto:v kroku 1 předat vzdálený port z kancelářského počítače na server (12345 je použit jako příklad, měl by stačit jakýkoli port>1024). Nyní, když se připojíte k 12345 na serveru, měli byste se připojit k portu 22 na officepc.

V kroku 2 přepošlete port 23456 z vašeho domácího počítače na 12345 na serveru (odtud bude předán na officepc:22, jak je nastaveno v kroku 1)

V kroku 3 se připojíte k místnímu portu 23456 pomocí přihlášení k vašemu kancelářskému PC . To je předáno v kroku 2 na port 12345 na vašem serveru a v kroku 1 na váš kancelářský počítač.

Všimněte si, že pro předávání používám autossh, protože je to obal ssh, který automaticky znovu připojí tunel, pokud by byl odpojen; nicméně normální ssh by fungovalo také, pokud by se spojení nepřerušilo.

Existuje možná chyba zabezpečení:kdokoli, kdo se může připojit k localhost:12345 na serverpc, se nyní může připojit k officepc:22 a pokusit se do něj proniknout. (Všimněte si, že pokud provozujete SSH server, měli byste jej každopádně zabezpečit nad základní ochrany, které jsou ve výchozím nastavení zapnuté; doporučuji alespoň zakázat přihlášení uživatele root a zakázat ověřování heslem – viz např. toto)

Upravit :Ověřil jsem to se stejnou konfigurací a funguje to. GatewayPorts no ovlivňuje pouze porty, které jsou otevřeny celému světu, nikoli místní tunely. Toto jsou přesměrované porty:

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

Takže pokud jde o síťový zásobník, je to veškerý místní provoz na příslušných rozhraních zpětné smyčky (plus připojení ssh k serverpc); tedy GatewayPorts není vůbec zaškrtnuto.

Existuje však direktiva AllowTcpForwarding :pokud je to no , toto nastavení selže, protože není povoleno žádné předávání, a to ani přes rozhraní zpětné smyčky.

Upozornění :

  • pokud používáte autossh a poslední ssh, možná budete chtít použít ssh ServerAliveInterval a ServerAliveCountMax pro udržení tunelu nahoře. Autossh má vestavěnou kontrolu, ale zjevně má nějaké problémy na Fedoře. -M0 to zakáže a -oServerAliveInterval=20 -oServerAliveCountMax=3 zkontroluje, zda je připojení aktivní - zkouší každých 20 sekund, pokud selže 3x za sebou, zastaví ssh (a autossh vytvoří nové):

    autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
    autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
  • může být užitečné restartovat ssh tunel, pokud se předávání nezdaří, pomocí -oExitOnForwardFailure=yes - pokud je port již vázán, můžete získat funkční připojení SSH, ale žádný předaný tunel.

  • pomocí ~/.ssh/config pro možnosti (a porty) je vhodné, jinak jsou příkazové řádky příliš podrobné. Například:

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

Pak můžete použít pouze alias serveru:

    autossh -M0 fwdserverpc

Pokud můžete ssh na interní server z domova a z interního serveru na váš kancelářský počítač Linux, pak z domova můžete použít ssh ProxyCommand aby se tiše odrazil přes server na interní počítač přes nc (netcat)

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

Pak stačí ssh [email protected] a vy jste tiše přesměrováni přes serverový stroj, na žádném konci není potřeba otevírání portů ani tunelů.


Nainstalujte Robo-TiTO do počítače, ze kterého chcete vzdáleně přistupovat k SSH.

  • To vám umožní přistupovat k SSH pomocí klientských aplikací Google Talk odkudkoli.
  • Není potřeba mít veřejnou IP adresu ani speciální nastavení.
  • Je to zdarma a s otevřeným zdrojovým kódem, již neplatíte žádné aplikační služby.
  • Není třeba otevírat port SSH (udržujte počítač v bezpečí).
  • Není třeba otevírat žádné tunelování (např. VPN nebo něco podobného)

Následující pokyny k instalaci jsou zastaralé, protože web se přestěhoval. Nová adresa URL je https://github.com/formigarafa/robotito

Udělal jsem skript (vyzkoušeno na mém Raspbian OS v Raspberry Pi), takže můžete snadno nainstalovat Robo-TiTO na Raspberry Pi, Debian nebo Ubuntu Box (distribuce balíčků Debian). Toto jsou kroky k získání vašeho Linuxu vzdálená skříň:

  1. Otevřete příkaz Shell nebo jej můžete nazvat Terminál, přejděte do domovské složky a stáhněte instalační skript příkazem:

    $ wget https://opengateway.googlecode.com/files/robotito
    
  2. poté spusťte skript zadáním příkazu:

    $ sudo ./robotito
    
  3. a poté můžete upravit soubor credentials.rb z konfigurační složky Robo-TiTO pomocí svého účtu GTalk a uložte jej stisknutím Ctrl +X a Y . Výchozí je použití nano editoru.

  4. spuštění Robo-TiTO ze složky Robo-TiTO příkazem

    $ cd robotito
    $ ./jabbershd start
    
  5. Nyní, když je to hotovo, můžete používat SSH z jakéhokoli klienta Google Talk. Nezapomeňte si přidat účet Robo-TiTO GTalk ke svému účtu Google Talk a před použitím účtu jej otestovat vzájemným chatováním.


Linux
  1. Jak nakonfigurovat vlastní připojení SSH pro zjednodušení vzdáleného přístupu

  2. Jak používat tunelování SSH pro přístup k omezeným serverům

  3. Ssh – více podobných položek v konfiguraci Ssh?

  1. Ssh – protokolování pokusů o přístup Ssh?

  2. Jak vytvořit nového uživatele s přístupem Ssh?

  3. Povolit vzdálený přístup Ssh?

  1. Omezte přístup SSH podle IP adresy

  2. Omezit přihlášení SSH na konkrétní IP nebo hostitele

  3. Soubory Rsync přes zprostředkujícího hostitele