Ve vašem .ssh/config
bych navrhoval následující :
Host C
User user
ProxyCommand ssh -W %h:%p [email protected]
Nejsem o moc bezpečnější, když je hostitel B nedůvěryhodný a funguje pro scp a sftp.
Jak je popsáno v této odpovědi, můžete použít ProxyCommand
direktiva má mít ssh
hostitel vás transparentně odkáže na třetího hostitele:
Řekněme, že máte následující tři hostitele:
workstation.example.com
- Toto je stroj, na kterém fyzicky pracujeteproxy.example.com
– Toto je stroj, přes který směrujete provoz SSHendpoint.example.com
– Zde chcete, aby provoz nakonec skončil
V ~/.ssh/config
na workstation
, přidejte následující:
Host endpoint
User endpointUser # set this to the username on the endpoint host
HostName endpoint.example.com
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
Na proxy
hostitele, ujistěte se, že nc
(netcat) je nainstalován.
Poté na workstation
, můžete ssh endpoint
nebo sftp endpoint
a k počítači budete transparentně připojeni prostřednictvím hostitele proxy. scp
bude také fungovat.
Je to možné a relativně snadné, i když potřebujete k autentizaci použít certifikáty (typické v prostředích AWS).
Níže uvedený příkaz zkopíruje soubory ze vzdálené cesty na serveru2 přímo do vašeho počítače na localPath. Interně je požadavek scp přes proxy server1.
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Pokud místo toho používáte ověřování heslem, zkuste to pomocí
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Pokud na obou serverech používáte stejná uživatelská pověření:
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>