Portál AbcLinuxu, 30. dubna 2025 11:20
Host prestupni-stanice Hostname prestupni-stanice.example.com ... Host *.example.com ProxyCommand ssh prestupni-stanice "socat STDIO TCP-CONNECT:%h:22Nebo tobe se to nezacykli z jineho duvodu? :)
Je to bezpečnější než tunelování agenta a pohodlnější než tunelování cílových SSH portů na localhost pomocí ssh -L 2222:cilovy-stroj.example.com:22
(tam je potřeba ručně vytvářet tunel) Navíc s ProxyCommandem a socatem můžeme snadno použít takové věci jako SSHFS.
Ale asi jsem měl nejdřív srovnat ty tři možnosti a pak teprve psát řešení, takhle to možná zapadlo.
~/.ssh/proxy-command.sh %h %p
. Má to velkou výhodu - lze pohodlně naskriptovat jak se na daný stroj připojím např podle aktuálního umístění. Například z práce se můžu rovnou připojit na stroj u zákazníka, kdežto z internetu musím nejdřív skočit na stroj do práce a pak až dál (zákazník má omezený přístup jen z některých adres).
Dále se často připojuji na zhruba 200 počítačů které jsou připojeny ve VPN. Informace o vsech strojich jsou v centralne spravovanem v XML souboru kde je uvedeno: jmeno_serveru
, ip_adresa
. Tento seznam je docela dynamicky a porad se meni. Udrzovat tedy vlastni .ssh/config
je komplikovane. Proto jsem si pro bash_completion napsal skript ktery pro ssh napovida jmena stroju ve formatu vpn-jmeno_serveru
. Do .ssh/config jsem dal pouze direktivu
Host vpn-* ProxyCommand ~/.ssh/ssh-proxy-vpn %hV odkazovanem skriptu si dle jmena stroje zjistim jeho adresu a provedu pripojeni.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.