web-dev-qa-db-fra.com

Se connecter avec SSH via un proxy

Je n'ai aucune idée de ce que je fais ici, alors s'il vous plaît, gardez cela à l'esprit si vous pouvez m'aider!

J'essaie de me connecter à mon serveur virtuel via un proxy, mais je ne peux pas me connecter, il se bloque. Je suppose que c'est parce que cela ne passe pas par notre procuration.

J'ai essayé exactement la même chose à la maison et cela fonctionne parfaitement. Je suis sous OSX avec Terminal pour me connecter.

Quelqu'un peut-il me dire comment je peux passer à travers le proxy avec SSH?

30
bencarter78

Voici comment faire la réponse de Richard Christensen en une ligne, aucune édition de fichier requise (remplacez par une majuscule vos propres paramètres, PROXYPORT vaut souvent 80):

 ssh USER@FINAL_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"

Vous pouvez également utiliser la même option -o ... pour scp, voir https://superuser.com/a/752621/39364

Si vous obtenez cela sous OS X:

 nc: invalid option -- X
 Try `nc --help' for more information.

il se peut que vous utilisiez accidentellement la version homebrew de netcat (vous pouvez voir en effectuant une commande which -a nc --/usr/bin/nc devrait être répertorié en premier). S'il y en a deux, une solution consiste à spécifier le chemin d'accès complet au nc souhaité, tel que ProxyCommand=/usr/bin/nc ...

Pour CentOS nc a le même problème de invalid option --X. connect-proxy est une alternative, facile à installer avec yum et fonctionne - 

ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" USER@FINAL_DEST
47
rogerdpack

Si votre connexion proxy SSH doit être utilisée fréquemment, vous n'avez pas à les transmettre en tant que paramètres à chaque fois. vous pouvez ajouter les lignes suivantes à ~/.ssh/config

Host foobar.example.com
    ProxyCommand          nc -X connect -x proxyhost:proxyport %h %p
    ServerAliveInterval   10

puis pour connecter l'utilisation

ssh foobar.example.com

La source:

http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html

21

J'utilise l'option -o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p" ssh pour me connecter via le proxy socks5 sur OSX.

17
Maxim K.

@rogerdpack Pour la plate-forme Windows, il est très difficile de trouver un nc.exe avec -X (http_proxy). Cependant, j’ai trouvé que nc pouvait être remplacé par ncat, voici un exemple complet:

Host github.com
     HostName github.com
         #ProxyCommand nc -X connect -x 127.0.0.1:1080 %h %p
         ProxyCommand ncat --proxy 127.0.0.1:1080 %h %p
     User git
     Port 22
     IdentityFile D:\Users\Administrator\.ssh\github_key

et ncat avec --proxy peuvent faire un travail parfait

7
shoaly
$ which nc
/bin/nc

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

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> %h %p" USER@Host

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" USER@Host
2
zhigang
ProxyCommand nc -proxy xxx.com:8080 %h %p

supprimez -X connect et utilisez -proxy à la place.

Travaillé pour moi.

1
Robin Mathews

J'utilisais les lignes suivantes dans mon .ssh/config (qui peut être remplacé par des paramètres de ligne de commande appropriés) sous Ubuntu

Host remhost
  HostName      my.Host.com
  User          myuser
  ProxyCommand  nc -v -X 5 -x proxy-ip:1080 %h %p 2> ssh-err.log
  ServerAliveInterval 30
  ForwardX11 yes

Lors de son utilisation avec Msys2, après l’installation de gnu-netcat, le fichier ssh-err.log indiquait que l’option -X n’existait pas. nc --help l'a confirmé et a semblé montrer qu'il n'y avait pas d'autre option pour gérer les mandataires.

J'ai donc installé openbsd-netcat (pacman supprimé gnu-netcat après avoir posé la question, car il était en conflit avec openbsd-netcat). Sur une première vue, et en vérifiant les pages de manuel respectives, openbsd-netcat et Ubuntu netcat semblent très similaires, en particulier en ce qui concerne les options -X et -x. Avec cela, je me connectais sans problèmes.

0
sancho.s

Dans mon cas, depuis que j'ai eu un hôte de saut ou un hôte Bastion sur le chemin, et parce que les signatures sur ces nœuds de bastion ont été modifiées depuis leur importation dans le fichier known_hosts, il me fallait simplement supprimer ces entrées/lignes du fichier suivant:

/Users/a.abdi-kelishami/.ssh/known_hosts

Dans le fichier ci-dessus, supprimez les lignes faisant référence aux hôtes du bastion.

0
cyberPrivacy