Question Tunnel d'une connexion SSH via une machine intermédiaire en une seule commande


Existe-t-il un moyen, en une seule commande, d’établir une connexion SSH de mon ordinateur A, via l’ordinateur B, à l’ordinateur C, de sorte que j’ai accès au shell de l’ordinateur C?

Un problème (qui semble exclure le simple transfert de la connexion SSH à l'aide de l'option -L) est que j'ai le mot de passe pour le compte sur l'ordinateur B et que le compte sur l'ordinateur B est autorisé à se connecter au compte sur l'ordinateur C, mais Je n'ai pas le mot de passe pour le compte sur l'ordinateur C.


8
2017-08-25 13:13


origine




Réponses:


J'ai compris que vous souhaitiez simplement vous connecter à l'ordinateur C, sans réellement rien tunneler de A à C. Cela devrait donc faire l'affaire:

ssh -t computer-b "ssh computer-c"

Vous devrez peut-être entrer deux fois le mot de passe, d'abord pour l'ordinateur B, puis pour l'ordinateur C, mais cela peut être évité en utilisant l'authentification par paire de clés de ssh.


7
2017-08-25 13:19



Merci - ça marche! Si je peux être assez audacieux pour demander un suivi. Des idées comment je peux scp un fichier de A à C en une seule commande? - sanity
C'est un peu délicat. Cela pourrait être fait en ajoutant tar au mélange, mais s'il ne s'agit que d'un fichier et que l'ordinateur B dispose de l'espace disque nécessaire pour le conserver pendant un certain temps, il est beaucoup plus facile de le copier en deux étapes. - af.
Vous pouvez également le faire trois fois! ssh -t computer-b "ssh -t computer-c 'ssh computer-d'" :RÉ - Gerald Kaszuba


Vous voulez probablement utiliser ProxyCommand de SSH: http://benno.id.au/blog/2006/06/08/ssh_proxy_command


0
2017-08-25 13:37



Je ne peux pas trouver un moyen de faire en sorte que cela fonctionne car je n'ai pas le mot de passe pour l'ordinateur C, et cette approche semble l'exiger. Ouverte aux suggestions car cette approche semble plus élégante. - sanity


Si vous utilisez des clés ssh, vous pouvez générer une nouvelle clé pour la machine B et l'utiliser pour la connexion de A à B. Sur la machine B, vous pouvez ajouter

command="ssh C" ssh-....

dans le ~/.ssh/authorized_keys fichier. Cela signifie que chaque fois que vous vous connectez à B avec cette clé ssh, il exécutera la ssh C commander.

Je ne sais pas si cela fonctionne avec scp.


0
2017-08-25 14:20





Utilisation ProxyCommand

Voir man ssh_config. Je recommande de faire usage de ProxyCommand. Prenons votre scénario d'origine:

  • Ordinateur A (votre ordinateur)
  • Ordinateur B (un nom d’hôte proxy)
  • Ordinateur C (accessible uniquement via SSH à partir de l'ordinateur B)

modifier ~/.ssh/config avec le contenu suivant.

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

Vous pourrez maintenant accéder de manière transparente à l’Ordinateur C.

ssh computerc

Avantages de cette méthode

Plus sécurisé

Vous n'avez besoin que de votre clé privée pour être sur l'ordinateur A (votre ordinateur). le nc La commande agira comme un proxy dans lequel SSH chiffrera le trafic. Cela inclut l'authentification. C'est une très mauvaise idée de distribuer votre clé privée sur plusieurs serveurs (car tout serveur compromis avec votre clé privée compromet en fin de compte votre clé privée).

Correspond à plusieurs destinations

On peut faire correspondre plusieurs ordinateurs de destination en utilisant Host. Un seul ordinateur ou n’importe quel ordinateur appartenant à un réseau spécifique (p. Ex. 192.168.35.0/24 dans l'exemple ci-dessus) à utiliser un proxy via l'ordinateur B. Il sert également d'alias.

ssh 192.168.35.27

Dans l'exemple ci-dessus, il utilisera un proxy via l'ordinateur B pour accéder à l'adresse IP.

Proxy en guirlande

En utilisant cette méthode, vous pouvez connecter autant de serveurs mandataires automatiques que nécessaire. par exemple. vous pouvez ajouter un Ordinateur d accessible uniquement à partir de l’ordinateur C et fonctionnera de manière transparente.

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerd sera automatiquement proxy par ordinateur C et ordinateur B dans ce qui précède ssh_config exemples.


0
2017-07-25 05:59