web-dev-qa-db-fra.com

Impossible de SSH / SFTP sur le serveur distant sans utiliser un autre serveur distant

Je peux accéder à un serveur A avec SSH, et à partir de là, je peux accéder au serveur B =, mais je ne peux pas accéder directement à B .

Est-il possible d'ouvrir un dossier Nautilus sur le serveur B en cliquant dans PlacesConnect to Server?

4
Ian Liu Rodrigues

Oui c'est possible. J'ai la configuration suivante qui fonctionne, mais il pourrait y en avoir plus facile.

Dans le fichier ~/.ssh/config, ajoutez les lignes suivantes:

ControlMaster auto
ControlPath   /home/yourusername/.ssh/tmp/%h_%p_%r
Host A
  HostName hostname.of.server.a

Host B
  ProxyCommand ssh -e none A netcat -w 5 hostname.of.server.b 22

Vous devez remplacer votre nom d'utilisateur, hostname.of.sever.a et hostname.of.server.b Après cela, vous pouvez (dans Nautilus) aller dans Places-> Connect to Server (c'est en fait File-> Connect to Server sur ma machine ). Et puis entrez B. Ce devrait être tout pour voir le serveur B.

5
xubuntix

Une chose à essayer est d'ajouter ceci à .ssh/config:

Host B
  ProxyCommand ssh A nc -q0 %h %p
  ForwardAgent yes

Une fois que cela est en place, vous devriez pouvoir ssh B directement, et SSH saura "rebondir" la connexion via A en premier.

Lorsque cela fonctionne, essayez Nautilus comme vous le décrivez et voyez si la configuration de proxy fonctionne également.

3
roadmr

Une mise à jour sur les réponses précédentes: l'utilisation de netcat pour transférer la connexion sur l'hôte intermédiaire fonctionne différemment de ssh'ing directement et échouera lorsque vous le souhaiterez, par exemple se connecter à un serveur VNC configuré pour accepter uniquement les connexions locales via un tunnel jumphost. Pour que la connexion fonctionne exactement comme une connexion directe, utilisez l'option -W présente dans les versions plus récentes du client:

Host jumphost
Hostname hostname.of.jumphost

Host target
Hostname hostname.of.target
Port 30022
ProxyCommand ssh -W %h:%p jumphost
0