často musím stáhnout soubor, který není přímo přístupný přes první připojení SSH. Například jsem na počítači se systémem Windows a chci získat přístup k jinému počítači, který je dostupný pouze z lan. To znamená, že se musím nejprve připojit k mezilehlému počítači a SSH k dalšímu.
Bylo by snadné použít pscp k získání souboru, pokud by byl dostupný pro první počítač. Lze v tomto scénáři použít přesměrování portu SSH?
Přijatá odpověď:
Ano, v tomto případě lze použít přesměrování portů SSH, ale při pokusu o to můžete také získat varování o neplatných nebo nesprávných klíčích hostitele. Někteří klienti SSH, jako je OpenSSH, sledují hostitelské klíče SSH pouze podle domény nebo IP a nezahrnují číslo portu. Zdá se, že PuTTY zaznamenává číslo portu s klíčem hostitele a neměl by tímto problémem trpět, pokud budete v souladu s tím, která čísla portů používáte pro každého hostitele. Doporučil bych přidat přesměrování portů do uložené relace v PuTTY. Poté můžete také uložit další relace pro různé vzdálené hostitele jako uložené relace a použít je s pscp/psftp. Můžete začít s libovolným portem s vysokým číslem pro přesměrování, jako je 2220, a odtud jít nahoru o jeden pro každého hostitele, kterého potřebujete přesměrovat přes mezilehlého hostitele. Přidat do uložené relace pro intermediate
místní port forwarduje jako port 2220
a cíl remote1:22
a port 2221
s cílem remote2:22
pro vzdálené hostitele remote1
a remote2
Poté vytvořte relace pro remote1
s cílovým localhost
a SSH port 2220
a relace pro remote2
s cílovým localhost
a SSH port 2221
. Pro použití relací s pcsp/psftp použijte @session-name
pro hostitele.
Problém nastane, když jste buď nějak spojili hostitelský klíč SSH s localhost a pokusíte se připojit k místnímu portu, který je předán jinému počítači. S OpenSSH jsem tento problém vyřešil pomocí HostKeyAlias
. Přidal jsem položky do svého ~/.ssh/config
takhle:
Host intermediate
HostName intermediate.example.org
LocalForward 2220 remote1.example.org:22
LocalForward 2222 remote2.example.org:22
Host remote1
HostName localhost
Port 2220
HostKeyAlias remote1.example.org
Host remote2
HostName localhost
Port 2221
HostKeyAlias remote2.example.org
Moje preferovaná oprava však byla, když jsem nasadil IPv6 ve své domácí a pracovní síti a už jsem se nemusel starat o připojení k mezilehlému serveru, abych se dostal do svého konečného cíle.
Související:Linux – nějaké vážné riziko, pokud si Mint 17 myslí, že jde o Ubuntu?