Je suggérerais ce qui suit dans votre .ssh/config :
Host C
User user
ProxyCommand ssh -W %h:%p [email protected]
Je ne suis pas beaucoup plus sûr si l'hôte B n'est pas fiable et fonctionne pour scp et sftp.
Comme décrit dans cette réponse, vous pouvez utiliser le ProxyCommand directive pour avoir un ssh l'hôte vous renvoie vers un troisième hôte de manière transparente :
Supposons que vous ayez les trois hôtes suivants :
workstation.example.com- C'est la machine sur laquelle vous travaillez physiquementproxy.example.com- Il s'agit de la machine par laquelle vous acheminez votre trafic SSHendpoint.example.com- C'est là que vous voulez que le trafic aboutisse
En ~/.ssh/config le workstation , ajoutez ce qui suit :
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
Sur le proxy hôte, assurez-vous que nc (netcat) est installé.
Puis, sur workstation , vous pouvez ssh endpoint ou sftp endpoint et vous serez mandaté de manière transparente à la machine par le biais de votre hôte proxy. scp fonctionnera également.
C'est possible et relativement facile, même lorsque vous devez utiliser des certificats pour l'authentification (typique dans les environnements AWS).
La commande ci-dessous copiera les fichiers d'un remotePath sur server2 directement dans votre machine à localPath. En interne, la requête scp est proxy via server1.
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Si vous utilisez plutôt l'authentification par mot de passe, essayez avec
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Si vous utilisez les mêmes informations d'identification utilisateur sur les deux serveurs :
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>