Serveur relais SSH avec OpenSSH


10

Est-il possible d'utiliser OpenSSH pour relayer vers d'autres appareils compatibles SSH tels que des routeurs, des commutateurs, etc. Si est-ce quelque chose qui peut être fait sans créer une application sur mesure sur Linux pour le faire?

Merci

Réponses:


9

Sûr; utilisez simplement la redirection de port / tunneling SSH. Démarrez une connexion ssh à la machine "proxy" à l'aide de la commande suivante:

ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
  • $PROXYHOST: la machine à laquelle vous avez accès SSH
  • $REMOTEHOST: la machine à laquelle $ PROXYHOST peut se connecter, mais vous ne pouvez pas. Utilisez un nom d'hôte ou une adresse IP $PROXYHOSTpouvant faire référence à la machine
  • $SSHPORT: le port que sshd écoute sur remotehost; très probablement 22
  • $LOCALPORT: le port sortant local SSH s'ouvre sur votre machine locale qui transmet au port 22 sur $REMOTEHOST

Laissez cette connexion en place pour que le tunnel fonctionne. Vous voudrez peut-être également ajouter -Nà la commande afin que cette connexion ne fasse pas apparaître un shell distant et que vous ne le fermiez pas accidentellement plus tard.

Une fois le tunnel établi, procédez comme suit:

ssh -p $LOCALPORT localhost

Cela tente une connexion SSH à votre machine locale sur le port qui est transmis au $REMOTEHOSTport SSH du.


3

Si vous êtes prêt à mettre à jour la configuration de votre client, vous pouvez configurer votre client pour utiliser votre passerelle comme proxy . Votre boîtier de relais aura besoin de netcat installé, et pour les meilleurs résultats, vous voudrez avoir une configuration d'authentification basée sur les clés.

Voici ce que j'utilise dans mon .ssh / config pour me connecter via un autre hôte.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"

Avec ce qui précède, vous pouvez simplement exécuter la commande ssh internal-ssh-host-proxy à partir de votre machine client.

Si l'hôte SSH proxy est doté du client OpenSSH 5.4 ou supérieur, vous n'avez pas besoin de netcat, et vous pouvez plutôt utiliser le mode netcat intégré.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22

Désolé mais ce n'est pas en utilisant OpenSSH que vous utilisez netcat pour faire le relais entre le serveur client et le serveur?
aHunter

Il utilise OpenSSH combiné à un utilitaire très courant qui est disponible presque partout. Ce n'est pas du pur ssh, mais je n'appellerais pas ça sur mesure.
Zoredache

Non, je suis d'accord que ce n'est pas sur mesure mais je voulais savoir s'il est possible de relayer en utilisant OpenSSH afin que vous utilisiez un client ssh standard et ssh vers une boîte exécutant OpenSSH qui fournit ensuite automatiquement un accès ssh à une autre machine ou à plusieurs machines. Merci
aHunter

1
@aHunter, pour mémoire, il y a maintenant un «mode netcat» intégré à openssh 5.4 qui offre une pure connexion openssh - blog.rootshell.be/2010/03/03/08/openssh-new-feature-netcat-mode sans outils externes sont nécessaires.
Zoredache

3

Parmi les réponses présentées, celle de Zordache est la meilleure solution globale. Cependant pour la postérité, si vous voulez simplement vous connecter ad-hoc sans éditer votre configuration, utilisez l' -tindicateur pour allouer un pseudo terminal avec l'exécution de ssh directement sur le relais.

ssh -t relay.example.com ssh internal.example.com

solution la plus simple sans modifier les fichiers
Kartoch

2

Vous pouvez transférer automatiquement les connexions à l'aide d'OpenSSH. Dans votre ~/.ssh/authorized_keysfichier, vous pouvez spécifier une commande à exécuter, qui pourrait être un SSH pour une deuxième machine.

[ssh client] ----> [ssh relay server] ----> [ssh target server]
    you          modified authorized_keys      target machine

Vous finirez par voir deux invites Password:: une pour le serveur relais et une pour le serveur cible. Vous pouvez toujours supprimer ce comportement à l'aide de certificats.


cela semble parfait comment configurer le sshd dans openssh?
aHunter

Reportez-vous à la section [Forced Commands] [1] at [1] eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
sybreon

c'est une idée incroyable. La dernière chose que je veux faire est d'ouvrir 100 ports discrets dans mon pare-feu avec des routes. Répétez ensuite l'opération pour la redondance. Cela suggère que je peux créer 100 clés ssh et les relier à son propre serveur. Cela suggère également que je peux verrouiller complètement le serveur relais. Certains pourraient appeler cela un VPN mais je le vois différemment.
Richard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.