SSH über einen SOCKS-Proxy? (client = OpenSSH OS X)


11

Ich bin mir nicht sicher, ob diese Frage hier bei ServerFault oder bei SuperUser am besten geeignet ist. Logisch darüber nachdenken Ich denke, das ist eine Sysadmin-Frage, also setze ich sie hier ein, und wenn die Mods denken, dass sie sich bewegen sollten, dann entschuldige ich mich dafür, dass ich falsch geraten habe!

Wie auch immer - ich habe einen Server außerhalb des Standorts und stecke auf einer privaten IP mit nichtem Zugriff auf das Netz fest, außer über einen HTTP-Proxy oder einen SOCKS 4/5-Proxy. Ich verwende OS X und möchte, dass der Befehl ssh vom Terminal irgendwie über einen dieser beiden Proxys funktioniert, um zum Remote-Server zu gelangen. Der SSH-Port auf dem Remote-Server ist nicht Standard, obwohl ich bezweifle, dass dies einen großen Unterschied machen wird.

Antworten:


5

Ich weiß, dass dies ein alter Beitrag ist, aber ich denke, diese Antwort wird immer noch hilfreich sein:

Sie können dies sehr einfach über einen SOCKS-Proxy mit NetCat (nc) tun. In Ihrer ~ / .ssh / config fügen Sie einfach zwei Zeilen hinzu, eine, die angibt, welche Hosts Sie als Proxy verwenden möchten, und eine Zeile, in der angegeben wird, wie eine Verbindung über nc hergestellt werden soll. Wie so:

~ / .ssh / config: (unter OSX getestet, sollte auch unter Linux funktionieren)

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

Ersetzen Sie "PROXY_HOST" durch das richtige für Ihr Setup.

Dies führt dazu, dass ssh anstelle einer direkten TCP-Verbindung zum Zielhost (in diesem Fall alles, was mit "10" beginnt - kann eine IP- oder Hostname sein) den Befehl "nc" mit den angegebenen Optionen tatsächlich ausführt Stellen Sie die TCP-Verbindung her, und SSH erledigt den Rest von dort aus. Sehr praktisch.

"5" ist die SOCKS-Version, "1080" ist der Proxy-Port, "% h" SSH wird durch den Host ersetzt, den Sie in der Befehlszeile eingegeben haben, und "% p" SSH wird durch den Port über die Befehlszeile (oder die Standardeinstellung) ersetzt 22).


7

Ja, das kann man machen. Ein Beispiel finden Sie auf dieser Website .

Grundsätzlich verwenden Sie Ihre lokale ~/.ssh/configDatei (oder /etc/ssh/ssh_configwenn diese systemweit sein muss), um eine ProxyCommandDirektive für die Hosts anzugeben, zu deren Zugriff Sie den Proxy durchlaufen müssen.

Sie können auch nc(mit OS X geliefert) anstelle der auf dieser Site erwähnten Software verwenden.

Weitere Informationen finden Sie auf den Seiten ssh_config(5)und nc(1).


1
Leider ist die Seite, auf die Sie verlinken, veraltet und der Link zur gepatchten Version der Binärdatei ist tot - 404 Fehler.
Bart B

1
Oh, wie peinlich das ist - ich habe einen Link zu einem funktionierenden Proxy-Befehl gefunden, der immer noch unter OS X 10.7 Lion kompiliert wird und immer noch in meinem eigenen Blog funktioniert! Zu meiner Verteidigung ist der Posten 6 Jahre alt, aber immer noch. Arbeitsanleitung hier: bartbusschots.ie/blog/?p=184
Bart B

2
@BartB "Alles, was Sie vor mehr als einer Woche geschrieben haben, wurde möglicherweise auch von jemand anderem geschrieben." - Es ist ein Programmier-Axiom, aber es gilt auch für Systemadministratoren und Blogger.
voretaq7

3

Etwas spät, aber beachten Sie, dass Sie die anderen Antworten hier im SSH-Befehl selbst mit dem Flag -o verwenden können. Dies war nützlich für mich, da ich möglicherweise den Proxy verwenden muss oder nicht (je nachdem, in welchem ​​Büro ich mich befinde), sodass ich meine SSH-Konfigurationsdateien nicht wirklich bearbeiten möchte.

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" myuser@cantaccessthiswithoutproxy.com
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.