Comment me connecter à un PC via un autre PC en utilisant ssh

13

J'ai trois ordinateurs.

PC1 et PC2 se trouvent sur un réseau local privé, où PC1 est connu de PC2 comme192.168.0.2

PC2 et PC3 se trouvent sur un autre LAN, où PC2 est connu de PC3 comme192.168.123.101

Comment puis-je me connecter à PC1 à partir de PC3 avec SSH.

Y a-t-il quelque chose comme:

ssh [email protected] -via [email protected]
Stefan
la source

Réponses:

19
ssh -o 'ProxyCommand ssh -W %h:%p [email protected]'

Ensuite, vous pouvez simplement courir ssh PC1.

Mieux utilisé via un alias dans ~/.ssh/config:

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p [email protected]

Pour les anciennes versions d'OpenSSH qui n'ont pas l' -Woption (je pense que cela signifie ≤5.4), assurez-vous que netcat est disponible sur PC2 et utilisez

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh [email protected] nc %h %p
Gilles 'SO- arrête d'être méchant'
la source
1
+1 Oui, et j'ai une réponse similaire stackoverflow.com/questions/1010808/1122282#1122282 avec plus de détails.
éphémère
nécessaire pour installer netcat
Stefan
4

En utilisant SSH, il existe une solution claire:

  1. sur votre ordinateur local, configurez votre ~/.ssh/configordinateur de sorte qu'il présente les éléments suivants:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. Sur la passerelle et le serveur final auquel vous souhaitez vous connecter, assurez-vous que les clés publiques de votre client local se trouvent dans le ~/.ssh/authorized_keys

  3. Sur la machine passerelle, vous devez modifier le ~/.ssh/authorized_keystel qu'au début de la ligne qui spécifie la clé publique de votre client, ajoutez la commande forcée comme suit:

    command="ssh -A [email protected]" ...yourPublicKey....
    

C'est -Ade transférer l'agent si vous n'aimez pas envoyer des mots de passe tout le temps ...

De cette façon, chaque fois que vous faites quelque chose comme ssh WhatYouWillCallTheConnectionça, il passera directement par la passerelle et vous connectera au serveur de l'autre côté de manière transparente.

Shamster
la source
2
Ne l'utilisez pas ssh -Asi vous ne faites pas confiance à l'administrateur de la machine passerelle. Il ne peut pas obtenir votre clé privée, mais tant que vous êtes connecté à la passerelle ssh -A, il peut utiliser l'agent transféré pour se connecter à d'autres machines comme vous.
Jander
2

La redirection de port peut être utile.
Depuis PC1:

~# ssh -fN -L 22:PC3:7777 -l <user> PC2  

7777 peut être n'importe quel port (à condition qu'il ne soit pas déjà utilisé). J'aime juste ce numéro, plus toute "commande" que je peux gérer par +1 (7778, 7779, etc, etc).

Ceci étant fait, vous aurez un tunnel «transparent» du port local 7777 de PC1 au port 22. de PC3.

~# ssh -l <user> -p 7777 localhost  

Et vous devriez être sur PC3.
Vous pouvez également utiliser -D pour transférer dynamiquement un port si vous souhaitez qu'un proxy SOCKS soit établi.

~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2  

À votre santé!

wormintrude
la source
1

La réponse 2017+ (depuis v7.3) à ceci est ProxyJump :

ssh -J user@jumphost user@destination

, qui est l'abréviation de:

ssh -o "ProxyJump user@jumphost" user@destination

Cela peut être raccourci ssh destavec un ~/.ssh/configextrait en tant que tel:

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ati.on
Alex Stragies
la source
0

La seule solution que je connaisse est le script ssh avec Belier :

Belier permet d'ouvrir un shell ou d'exécuter une commande sur un ordinateur distant via une connexion SSH. La principale caractéristique de Belier est sa capacité à traverser plusieurs ordinateurs intermédiaires avant de réaliser le travail.

Il y a quelque temps, j'ai trouvé ce fichier README.sshhop sur la page d'accueil du MIT Lincoln Laboratory, mais je n'ai pas pu trouver plus d'informations à ce sujet. Quelqu'un en sait-il plus?

écho
la source