Tunnel SSH via un serveur intermédiaire - comment se connecter en une seule étape (en utilisant une paire de clés)?

9

Ma question est essentiellement de savoir comment transformer mes deux étapes existantes en une seule étape.

J'ai un tunnel SSH fonctionnel entre deux ordinateurs utilisant un serveur intermédiaire comme celui-ci:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

Ce que je fais actuellement, c'est SSH de Kubuntu_laptop à Debian_Server puis de Debian_Server à Kubuntu_desktop. Je voudrais faire cette commande SSH, émise sur mon Kubuntu_laptop dans bash qui se traduit par ma connexion au Kubuntu_desktop (shell / bash).

Les commandes que j'utilise maintenant sont les suivantes. Étape 1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

Étape 2:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

Ensuite, je suis connecté au kubuntu_desktop via SSH (depuis kubuntu_laptop).

Les clés RSA sont requises pour toutes les connexions SSH. La connexion par mot de passe est désactivée tout autour. Et notez que les comptes d'utilisateurs d'ordinateurs sont différents sur deux des ordinateurs.

Concernant la connexion pour cette étape:

Debian_Server<--nat_fw<--Kubuntu_desktop

Voici comment cela s'établit:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

Remarquez que Kubuntu_desktop se connecte à l'intermédiaire en tant qu'[email protected] (pas admin @ debian_server). Mais lorsque je me connecte à Kubuntu_desktop, je me connecte en tant qu'administrateur.

Je ne peux pas modifier le port de surveillance existant (5234) ou le numéro de port distant (-R) (1234 dans cet exemple). Je ne peux pas modifier la sécurité SSH pour autoriser les connexions par mot de passe. Je ne peux pas ouvrir de nouveaux ports de pare-feu. Je ne peux pas changer de compte utilisateur (sauf sur ordinateur portable).

MountainX
la source
Jetez un oeil à cette question: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging
@HaukeLaging - semble intéressant mais je ne le comprends pas. Qu'est-ce que "nc"? Et sur quelle machine ~ / .ssh / config est-il édité? Fondamentalement, j'ai besoin de plus de détails que cette question / réponse. Merci.
MountainX
Cette question a été transmise (sans notification) à Server Fault SE. C'est une forme très MAUVAISE!
mdpc
merci pour les downvotes partout, mais quel est le problème avec demander à deux endroits différents? Allez-vous également m'empêcher de poser des questions sur ubuntuforums.org ou ailleurs?
MountainX
@ HaukeLaging-Si j'utilise ProxyCommand dans mon ordinateur portable ~ / .ssh / config, que dois-je saisir pour le nom d'hôte du Kubuntu_Desktop? Il n'y a pas de FQDN. Il s'agit de SSH inversé. Merci.
MountainX

Réponses:

8

Assurez-vous que netcat est installé sur le serveur Debian et utilisez-le ProxyCommanddans votre configuration SSH locale ( ~/.ssh/config).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234
Ignacio Vazquez-Abrams
la source
J'ai donné toutes mes étapes dans une autre réponse pour être complet, mais c'était grâce à votre aide. J'accepte votre réponse. Je vous remercie!!!
MountainX
6

Grâce à @Ignacio Vazquez-Abrams voici toutes les étapes:

Assurez-vous que netcat est installé sur le serveur Debian et utilisez ProxyCommand dans votre configuration SSH locale (~ / .ssh / config).

J'ai édité la configuration comme suit:

me@kubuntu_laptop:~/.ssh$ nano config

Les contenus sont:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Connectez-vous ensuite:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

Connecté à kubuntu_desktop via SSH en 1 étape! Parfait

Mise à jour:

Cela le rend plus flexible:

me@kubuntu_laptop:~/.ssh$ nano config

Les nouveaux contenus sont:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Ensuite, connectez-vous à maman:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

Et connectez-vous à papa:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

Bien sûr, maman et papa doivent configurer l'étape 0 (à partir de ma question d'origine) où chacun a son propre port -R défini. Exemple pour papa:

Étape 0 (pour papa):

autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22

Optionnel:

DAD=5678
ssh family_desktops -p $DAD
MountainX
la source
La ProxyCommand peut également s'écrire: ProxyCommand ssh debian_server_fqdn -W localhost:%pdonc pas besoin d'avoir netcat sur le serveur Debian.
Kevin