Portál AbcLinuxu, 12. května 2025 13:38

Dotaz: Přihlášení na mašinu přes několik dalších mašin (ssh)

22.2.2008 13:18 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Přihlášení na mašinu přes několik dalších mašin (ssh)
Přečteno: 908×
Odpovědět | Admin
Zdravím,

musím se hlásit na stroj, na který se dostanu jen přes hafo dalších routerů (přímý přístup není možný). Je nějaká možnost instruovat OpenSSH klienta (případně ideálně Puttynu), aby se připojila přes všechy ty boxy až na ten cílový?

Je to vopruz furt se přihlašovat (i když mám všude klíče a dávám -A). V manuálové stránce jsem zahlédl nějaké volby -L a -R, ale moc moudrý z nich nejsem.
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.2.2008 14:10 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
ssh -L funguje jednoduse:
ssh -L 8080:11.22.33.44:80 login@99.88.77.66
potom napriklad `telnet localhost 8080` presmeruje na webserver na ip 11.22.33.44 pres 99.88.77.66
-R je z opacne strany

neslo by pro tenhle pripad pouzit obycejne presmerovani portu?
V pekle jsou samé diskety a ďábel je velká disketová mechanika
22.2.2008 14:23 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Diky, spis nez presmerovavat porty bych se chtel pripojit pres ssh.

Dalo by se to zretezit (napr. pres 3 a vice masin)? Pak bych mohl takto presmerovat port 22 a pote se pripojovat pouze na port 22 na localhostu.
22.2.2008 14:35 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co dát do .bashrc něco jako ssh dalsi_stroj ?
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
22.2.2008 14:40 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Co bohužel nemůžu, účty jsou administrátorské (sdílené).
22.2.2008 15:26 edois
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
rozjedte si tam openvpn
22.2.2008 15:41 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
To bohužel nemůžu, na cestě je asi tak deset firewallů.

Kéž by tak šlo něco jako

ssh -A user@masina1 -c "ssh -A user2@masina2 -c "..." "

:-)
22.2.2008 16:12 edois
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
no prave proto rikam tu vpnku - staci zaridit, aby se vsechny ty servery (a vsichni ti admini) dostali na jednu konkretni ip adresu a port - onen vpn endpoint. nastavit takovou vyjimku na deseti firewallech by nemelo byt nic obtizneho

ad kez by slo:

ssh -A -t user1@masina1 "ssh -A -t user2@masina2 \"ssh -A -t user3@masina3\""

by nestacilo?
22.2.2008 20:07 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. možnost:
ssh -t stroj1.cz ssh -t stroj2.cz ssh -t stroj3.cz ssh -t stroj4.cz
2. možnost (to jsem přes víc než jeden stroj nezkoušel):
.ssh/config
host host2.cz
  ProxyCommand ssh -q -a -x host1.cz netcat -c %h %p
26.2.2008 11:10 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Tak jsou to zkusil a nefunguje to. Parametr -t je totiž jakési vypnutí přidělení identity, což v tomto případě asi nebude fungovat. Nespletl jste si parametr?
27.2.2008 01:46 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Nespletl, ale používám OpenSSH, tak pokud máte třeba ossh nebo ssh.com tak to bude tím. Parametr -t je
−t Force pseudo‐tty allocation.  This can be used to execute arbitrary screen‐based
   programs on a remote machine, which can be very useful, e.g. when implementing menu
   services.  Multiple −t options force tty allocation, even if ssh has no local tty.
27.2.2008 01:48 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
V tom druhém případě zase, netcat jsou dvě (a více) implementací... A nevím jestli a jak by to šlo přes víc strojů, spíš pro vás bude asi buď ten první případ a openssh, nebo nějaká ta proxy.
27.2.2008 10:46 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Takže nakonec ta finta pomocí "-t" funguje! Musel jsem ty "téčka" napsat pro všechny příkazy "ssh". Jediný problém byl ten, že nefungoval vim, protože v proměnné TERM bylo "linux", čemuž Sun nerozumněl. Takže jsem mu tam dal "vt100" a bylo to. Díky

Teďka kdyby se tohle podařilo s scp a byla by to úplná nirvána...
26.2.2008 12:37 Richard Tesař | skóre: 5
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
zkus použít expect. v něm si napiš jednoduchý skript, který tě přes ty stroje přihlásí
26.2.2008 22:26 hafieror
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Na prvním stroji bych si ve screenu nechal otevřenej přístup na poslední stroj.
26.2.2008 23:59 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Me se vyborne osvedcil ProxyCommand. Je to asi nelejpsi a uzasne variablni reseni - zalezi jak variabilne si proxy command napisete. Ten muj se se napriklad ridi i moji aktulni ip (doma/prace/internet). Hledejte v google "ssh bouncing".

Co se tyka windows, doporucuju cygwin.
never use rm after eight
27.2.2008 00:06 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Zapomel sem dodat: tohle funguje transparentne i pro scp!
never use rm after eight
27.2.2008 10:44 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
No a budu muset něco instalovat na vzdáleném systému, kde nemám roota?
27.2.2008 11:25 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
No koukám že nechápete, jak ProxyCommand funguje. Ukážu na modelové situaci. Máme dva stroje: mujstroj a server. ProxyCommand je skript, ktery musi zabezpecit komunikaci s ssh demonem na stroji "server" pres stdin/stdout. Tedy proxycommand musi vykonat:
nc server 22
Druha situace: v cestě mezi mujstroj a server stoji jeste nejaka brana. Proxy command opet musi zabezpecit, aby stdin/stdout komunikoval s ssh demonem na stroji server.
ssh brana "nc server 22"
Takhle muzete proxy command prodlouzit aby skocil treba pres 10 ruznych bran. S uspechem se vyuzije forwardovani klicu.

Ja to pouzivam zhruba takto. U kazdeho Hosta nadefinovaneho v ~/.ssh/config mam uvedeny proxy command.
Host server1
        HostName                server1.nekde
        ProxyCommand            ~/.ssh/ssh-proxy-command brana1 %h %p

Host server2
        HostName                server2.jinde
        ProxyCommand            ~/.ssh/ssh-proxy-command brana2 %h %p

Host server3
        HostName                server2.tady
        ProxyCommand            ~/.ssh/ssh-proxy-command direct %h %p

Proxy command vypada (velmi zjednodusene) takto:
#!/bin/bash

way=$1
target_addr=$2
target_port=$3

case $way in
        'direct')
                nc $target_addr $target_port
                ;;
        'brana1')
                ssh brana1 "nc $target_addr $target_port"
                ;;
        'brana2')
                ssh brana2 "nc $target_addr $target_port"
                ;;
vysledkem toho je, ze ssh ktere spoustite, tedy napriklad ssh server1, spusti proxy commnad ktery mu vytvori tunel az na cilovy stroj. takze muzete dle libosti forwardovat porty bez ruznych opicek a pouzivat scp.

Jedinym omezenim tedy je (krome toho ze samozrejme musite mit na vsechny stroje v ceste pristup) aby na poslednim stroji v ceste byl netcat (coz obvykle byva... a kdyz neni tak neni problem si ho zkompilovat do home nebo necim nahradit)

Upozornuji predem na to, ze v proxycommand nesmite cokoly vypsat na standardni vystup - tim vlastne zasahujete do sifrovane komunikace mezi vami a cilovym strojem. Pro ladici vypisy lze s upsechem pouzit stderr.
never use rm after eight
27.2.2008 11:40 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Tohle je minimálně na zápisek do blogu (nebo i na článek). Díky, o této možnosti konfigurace ssh klienta jsem nevěděl. Doufejme, že nebude podmínkou nějaká volba na straně serveru (např. jak to bylo u volby -L -- musel být aktivován TCPPortForwarding). Zkusím.
27.2.2008 13:46 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Ten proxy-command skript jste zjednodušil nějak moc, vždyť bez něj by to bylo takto:
Host server1
        HostName                server1.nekde
        ProxyCommand            ssh brana1 nc %h %p

Host server2
        HostName                server2.jinde
        ProxyCommand            ssh brana2 nc %h %p

Host server3
        HostName                server2.tady
        ProxyCommand            nc %h %p
Jaké je pro něj praktické využití?
27.2.2008 20:29 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Ze ten skript muzete rozsirit o dalsi veci: skoky pres vice pocitacu (ssh brana1 ssh brana2 nc server 22), rozdilne chovani v zavislosti na okolnostech (pripojeni z domu/prace/odjinud), povolovani veci na firewallu, pridavani klicu do ssh-agenta, navazovani vpn a ja nevim co jeste... tohle je jenom jednoducha ukazka.
never use rm after eight
27.2.2008 13:41 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Na předposledním stroji (tedy poslední v cestě ze kterého už máte přímý přístup na cílový stroj) musí být netcat. Pozor jistá implementace netcat vyžaduje -c, jinak by spojení zůstalo i po ukončení ssh komunikace viset.
27.2.2008 06:57 Tomáš Janeček | skóre: 12
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co to udelat tak, ze se prihlasis na PC1 na uzivatele tunel1. Ten bude mit misto shellu skriptik, ve kterem bude ssh tunel2@pc2 ... Overovani pomoci certifikatu a je to

Ja to takhle pouzival
Něco děsně chytrýho a vtipnýho
27.2.2008 10:38 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Nemůžu - jak jsem psal: sdílím administrátorský účet. To by mě asi nepochválili ti ostatní, co účet používají.
27.2.2008 07:09 BoBLO
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
http://sshproxy-project.org/about/
27.2.2008 10:37 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Myslíte, že na těch Sunech, na které se připojuju, je nainstalovaný Python? :-)

Potřebuji něco, co bude fungovat nejen v "obvyklé linuxové distribuci". Přesto díky za tip.
27.2.2008 08:41 lieko
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
este by si mohol na tom prvom servery spustit screen a zneho sa ssh-cknut kam je potreba. Potom sa neodhlasit, ale iba detachnut screen. Pri dalsej navsteve ssh na prvy server, tam $screen -r a je to.
3.3.2008 10:22 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: Přihlášení na mašinu přes několik dalších mašin (ssh)
Odpovědět | | Sbalit | Link | Blokovat | Admin
chainssh?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.