109 votes

Se connecter avec SSH à travers un proxy

Je n'ai aucune idée de ce que je fais ici, donc gardez cela à l'esprit si vous pouvez m'aider !

J'essaie de me connecter à mon serveur virtuel via un proxy mais je n'arrive pas à me connecter, ça reste bloqué. Je suppose que c'est parce que ça ne passe pas par notre proxy.

J'ai essayé exactement la même chose à la maison et ça fonctionne parfaitement. Je suis sur OSX en utilisant Terminal pour me connecter.

Est-ce que quelqu'un peut me conseiller sur la façon dont je peux passer par le proxy avec SSH ?

3voto

zhigang Points 899
$ which nc
/bin/nc

$ rpm -qf /bin/nc
nmap-ncat-7.40-7.fc26.x86_64

$ ssh -o "ProxyCommand nc --proxy  %h %p" USER@HOST

$ ssh -o "ProxyCommand nc --proxy  --proxy-type  --proxy-auth  %h %p" USER@HOST

3voto

Robin Mathews Points 27
ProxyCommand nc -proxy xxx.com:8080 %h %p

supprimer -X connect et utiliser -proxy à la place.

A fonctionné pour moi.

3voto

Riccardo Pozzi Points 41

J'utilise proxychains ssh utilisateur@hôte; de proxychains-ng.
Par défaut, il utilise un proxy socks4 à 127.0.0.1:9050 mais cela peut être changé dans le fichier de configuration /etc/proxychains.conf ou vous pouvez spécifier un autre fichier de configuration comme ceci : proxychains -f custom.conf

3voto

Hatsune Points 90

C'est ainsi que j'ai résolu le problème, en espérant aider les autres plus tard.

Mon système est debian 10, et l'installation est minimale.

J'ai également le même problème que celui-ci.

git clone git@github.com:nothing/nothing.git
Cloning into 'nothing'...
nc : option non valide -- 'x'
nc -h pour obtenir de l'aide
ssh_exchange_identification : connexion fermée par l'hôte distant
fatal: Impossible de lire depuis le dépôt distant.

Vérifiez que vous avez les droits d'accès corrects
et que le dépôt existe.

Ou

git clone git@github.com:nothing/nothing.git
Cloning into 'nothing'...
/usr/bin/nc : option non valide -- 'X'
nc -h pour obtenir de l'aide
ssh_exchange_identification : connexion fermée par l'hôte distant
fatal: Impossible de lire depuis le dépôt distant.

Vérifiez que vous avez les droits d'accès corrects
et que le dépôt existe.

Je sais donc que le nc a différentes versions telles que openbsd-netcat et GNU-netcat, vous pouvez changer le nc dans debian à la version openbsd, mais j'ai choisi de changer le logiciel comme corkscrew, car les noms des deux versions de nc dans le système sont les mêmes, et beaucoup de gens ne le comprennent pas bien. Voici mon approche.

sudo apt install corkscrew

Ensuite.

vim ~/.ssh/config

Modifiez ce fichier comme ceci.

Host github.com
    User git
    ProxyCommand corkscrew 192.168.1.22 8118 %h %p

192.168.1.22 et 8118 sont l'adresse et le port de mon serveur proxy, vous devez les changer selon l'adresse de votre serveur.

Cela fonctionne bien.

Merci @han.

3voto

aardvarkk Points 143

La manière la plus simple de faire cela après OpenSSH 7.3 est avec ProxyJump:

ssh USERNAME@HOSTNAME -J PROXYHOSTNAME

qui est une abbréviation pour la ProxyCommand ci-dessous (qui fonctionne sur les anciens clients):

ssh USERNAME@HOSTNAME -o "ProxyCommand=ssh PROXYHOSTNAME -W %h:%p"

Ou dans votre fichier de configuration ssh ($HOME/.ssh/config):

Host HOSTNAME
User USERNAME
ProxyCommand ssh PROXYHOSTNAME -W %h:%p

Les clients les plus anciens requièrent l'utilisation de netcat. Cela dépendra de la version de netcat et des options supportées (voir d'autres réponses).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X