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>