SSH via un proxy SOCKS? (client = OpenSSH OS X)

11

Je ne sais pas si cette question convient le mieux ici sur ServerFault ou sur SuperUser. En y réfléchissant logiquement, je pense que c'est une question d'administrateur système, donc je la pose ici, et si les mods pensent que cela devrait bouger, alors excuses pour deviner mal!

Quoi qu'il en soit - j'ai un serveur hors site et je suis bloqué sur une adresse IP privée sans accès au net, sauf via un proxy HTTP ou un proxy SOCKS 4/5. J'utilise OS X, et j'aimerais que la commande ssh du terminal fonctionne d'une manière ou d'une autre via l'un de ces deux proxys pour sortir sur le serveur distant. Le port SSH sur le serveur distant n'est pas standard, bien que je doute que cela fasse beaucoup de différence.

Bart B
la source

Réponses:

5

Je sais que c'est un post ancien, mais je pense que cette réponse sera toujours utile:

Vous pouvez très facilement le faire via un proxy SOCKS avec NetCat (nc). Dans votre configuration ~ / .ssh / vous ajoutez simplement deux lignes, une qui spécifie les hôtes que vous souhaitez proxy, et une ligne pour lui dire comment se connecter via nc. Ainsi:

~ / .ssh / config: (testé sur OSX, devrait également fonctionner sur Linux)

Host 10.*
    ProxyCommand nc -X 5 -x PROXY_HOST:1080 %h %p

Remplacez "PROXY_HOST" par la bonne chose pour votre configuration.

Cela provoque ssh, au lieu d'ouvrir directement une connexion TCP à l'hôte cible (dans ce cas, tout ce qui commence par "10." - peut être un IP ou un nom d'hôte), exécutez la commande "nc" avec les options spécifiées pour réellement établir la connexion TCP et SSH fait le reste à partir de là. Très utile.

"5" est la version SOCKS, "1080" est le port proxy, "% h" SSH remplace par l'hôte que vous avez tapé sur la ligne de commande et "% p" SSH remplace par le port de la ligne de commande (ou par défaut 22).

bgp
la source
7

Oui, cela peut être fait. Voir ce site pour un exemple.

Fondamentalement, vous utilisez votre ~/.ssh/configfichier local (ou /etc/ssh/ssh_configsi vous avez besoin qu'il soit à l'échelle du système) pour spécifier une ProxyCommanddirective pour les hôtes que vous devez traverser le proxy pour y accéder.

Vous pouvez également utiliser nc(fourni avec OS X) à la place du logiciel qu'ils mentionnent sur ce site.

Reportez-vous aux pages de manuel ssh_config(5)et nc(1)pour plus d'informations.

voretaq7
la source
1
Malheureusement, la page vers laquelle vous créez un lien est obsolète et le lien vers la version corrigée du binaire est mort - erreur 404.
Bart B
1
Oh, comme c'est embarrassant, j'ai trouvé un lien vers une commande proxy fonctionnelle qui se compile toujours sur OS X 10.7 Lion et fonctionne toujours SUR MON PROPRE BLOG! Pour ma défense, le poste a 6 ans, mais quand même. Instructions de travail ici: bartbusschots.ie/blog/?p=184
Bart B
2
@BartB "Tout ce que vous avez écrit il y a plus d'une semaine peut aussi bien avoir été écrit par quelqu'un d'autre." - C'est un axiome de programmation, mais cela vaut aussi pour les administrateurs système et les blogueurs.
voretaq7
3

Un peu en retard, mais notez que vous pouvez utiliser les autres réponses ici dans la commande SSH elle-même avec le drapeau -o. Cela m'a été utile, car je pourrais ou non avoir besoin d'utiliser le proxy (selon le bureau dans lequel je suis), donc je ne veux pas vraiment modifier mes fichiers de configuration ssh.

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" [email protected]
EdmCoff
la source