it-swarm.com.de

Verbinden Sie sich mit SSH über einen Proxy

Ich habe keine Ahnung, was ich hier mache. Bitte bedenken Sie das, wenn Sie mir helfen können!

Ich versuche, über einen Proxy eine Verbindung zu meinem virtuellen Server herzustellen, aber ich kann keine Verbindung herstellen, es hängt einfach. Ich gehe davon aus, dass dies nicht der Fall ist, weil wir unseren Proxy nicht erreichen.

Ich habe zu Hause genau dasselbe versucht und es funktioniert perfekt. Ich bin auf OSX und verwende Terminal, um eine Verbindung herzustellen.

Kann mir jemand raten, wie ich mit SSH durch den Proxy komme?

30
bencarter78

So können Sie die Antwort von Richard Christensen als Einzeiler machen, keine Bearbeitung der Dateien erforderlich (durch Großschreibung mit Ihren eigenen Einstellungen ersetzen, PROXYPORT ist häufig 80):

 ssh [email protected]_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"

Sie können dieselbe -o ...-Option auch für scp verwenden, siehe https://superuser.com/a/752621/39364

Wenn Sie dies in OS X erhalten:

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

es kann sein, dass Sie versehentlich die Homebrew-Version von netcat verwenden (Sie können dies durch einen which -a nc-Befehl feststellen - /usr/bin/nc sollte zuerst aufgeführt werden). Wenn es zwei gibt, ist eine Problemumgehung, den vollständigen Pfad zu dem gewünschten nc anzugeben, z. B. ProxyCommand=/usr/bin/nc ...

Für CentOS hat nc das gleiche Problem wie invalid option --X. connect-proxy ist eine Alternative, die einfach mit yum installiert werden kann und funktioniert - 

ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" [email protected]_DEST
47
rogerdpack

Wenn Ihre SSH-Proxy-Verbindung häufig verwendet wird, müssen Sie sie nicht jedes Mal als Parameter übergeben. Sie können die folgenden Zeilen zu ~/.ssh/config hinzufügen

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

dann zu verbinden verwenden

ssh foobar.example.com

Quelle:

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

21

Ich verwende die Option -o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p" ssh, um eine Verbindung über den Socks5-Proxy unter OSX herzustellen.

17
Maxim K.

@rogerdpack Für Windows-Plattformen ist es wirklich schwierig, eine nc.exe mit -X (http_proxy) zu finden. Ich habe jedoch festgestellt, dass nc durch ncat ersetzt werden kann. Vollständiges Beispiel wie folgt:

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

und ncat mit --proxy kann eine perfekte Arbeit leisten

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" [email protected]

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" [email protected]
2
zhigang

Bei Windows funktionierten die @shoaly-Parameter bei mir nicht vollständig. Ich habe diesen Fehler erhalten:

NCAT DEBUG: Proxy returned status code 501.
Ncat: Proxy returned status code 501.
ssh_exchange_identification: Connection closed by remote Host

Ich wollte zu einem REMOTESERVER sshen und der SSH-Port war in meinem Netzwerk gesperrt. Ich habe zwei Lösungen gefunden, aber die zweite ist besser.

  • So lösen Sie das Problem mit Ncat:

    1. Ich habe Tor Browser heruntergeladen, ausgeführt und gewartet, um eine Verbindung herzustellen.
    2. Ich habe Ncat von Nmap-Distribution erhalten und ncat.exe In das aktuelle Verzeichnis extrahiert.
    3. SSH mit Ncat als ProxyCommand in Git Bash mit zusätzlichem Parameter --proxy-type socks4:

      ssh -o "ProxyCommand=./ncat --proxy-type socks4 --proxy 127.0.0.1:9150 %h %p" [email protected]
      

      Beachten Sie, dass diese Implementierung von Ncat socks5 nicht unterstützt.

  • DIE BESSERE LÖSUNG :

    1. Führen Sie den vorherigen Schritt 1 aus.
    2. SSH mit connect.c als ProxyCommand in Git Bash:

      ssh -o "ProxyCommand=connect -a none -S 127.0.0.1:9150 %h %p"
      

      Bitte beachten Sie, dass connect.c Socken der Version 4/4a/5 unterstützt.

Um den Proxy in git Befehlen mit ssh zu verwenden (zum Beispiel bei Verwendung von GitHub) - vorausgesetzt, Sie haben Git Bash in C:\Program Files\Git\ Installiert - öffnen Sie ~/.ssh/config Und fügen Sie diesen Eintrag hinzu:

Host github.com
    user git
    hostname github.com
    port 22
    proxycommand "/c/Program Files/Git/mingw64/bin/connect.exe" -a none -S 127.0.0.1:9150 %h %p
2
Hamid Rohani

Ich benutze proxychains ssh [email protected]; von proxychains-ng (siehe https://github.com/rofl0r/proxychains-ng ).
Standardmäßig wird ein socks4-Proxy bei 127.0.0.1:9050 verwendet, dieser kann jedoch in der conf-Datei /etc/proxychains.conf oder Sie können eine andere conf-Datei angeben proxychains -f custom.conf

1
Riccardo Pozzi
ProxyCommand nc -proxy xxx.com:8080 %h %p

-X connect entfernen und stattdessen -proxy verwenden.

Arbeitete für mich.

1
Robin Mathews

Ich habe die folgenden Zeilen in meinem .ssh/config (der durch geeignete Befehlszeilenparameter ersetzt werden kann) unter Ubuntu verwendet

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

Bei der Verwendung von Msys2 nach der Installation von gnu-netcat zeigte die Datei ssh-err.log, dass die Option -X nicht vorhanden ist. nc --help bestätigte dies und schien zu zeigen, dass es keine Alternative gibt, Proxies zu handhaben.

Also installierte ich openbsd-netcat (pacman entfernte gnu-netcat, nachdem ich gefragt hatte, da es mit openbsd-netcat kollidierte). Auf den ersten Blick scheinen sich openbsd-netcat und Ubuntu netcat sehr ähnlich zu befinden, insbesondere hinsichtlich der Optionen -X und -x. Hiermit habe ich keine Probleme.

0
sancho.s

In meinem Fall, da ich einen Sprung-Host oder einen Bastion-Host auf dem Weg hatte, und da sich die Signaturen auf diesen Bastion-Knoten seit dem Import in die known_hosts-Datei geändert haben, musste ich nur diese Einträge/Zeilen aus der folgenden Datei löschen:

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

Löschen Sie aus der obigen Datei die Zeilen, die sich auf die Bastion-Hosts beziehen.

0
cyberPrivacy