Sugeriría lo siguiente en su .ssh/config :
Host C
User user
ProxyCommand ssh -W %h:%p example@unixlinux.online
No estoy mucho más seguro si el host B no es de confianza y funciona para scp y sftp.
Como se describe en esta respuesta, puede usar el ProxyCommand directiva para tener un ssh el host lo rebota a un tercer host de forma transparente:
Supongamos que tiene los siguientes tres hosts:
workstation.example.com- Esta es la máquina en la que estás trabajando físicamenteproxy.example.com- Esta es la máquina a través de la cual estás enrutando tu tráfico SSHendpoint.example.com- Aquí es donde desea que termine el tráfico en última instancia
En ~/.ssh/config el workstation , agregue lo siguiente:
Host endpoint
User endpointUser # set this to the username on the endpoint host
HostName endpoint.example.com
ProxyCommand ssh example@unixlinux.online nc %h %p 2> /dev/null
En el proxy anfitrión, asegúrese de nc (netcat) está instalado.
Luego, en workstation , puedes ssh endpoint o sftp endpoint y se le transmitirá de forma transparente a la máquina a través de su servidor proxy. scp también funcionará.
Es posible y relativamente fácil, incluso cuando necesita usar certificados para la autenticación (típico en los entornos de AWS).
El siguiente comando copiará archivos de una ruta remota en el servidor 2 directamente a su máquina en la ruta local. Internamente, la solicitud de scp se envía a través del servidor 1.
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p example@unixlinux.online" example@unixlinux.online:/<remotePath> <localpath>
Si usa la autenticación de contraseña en su lugar, intente con
scp -o ProxyCommand="ssh -W %h:%p example@unixlinux.online" example@unixlinux.online:/<remotePath> <localpath>
Si usa las mismas credenciales de usuario en ambos servidores:
scp -o ProxyCommand="ssh -W %h:%p example@unixlinux.online" example@unixlinux.online:/<remotePath> <localpath>