Ich stecke hinter einer Netzwerk-Firewall, die es mir nicht erlaubt, über den Standard-Port zu sshen. Aus diesem Grund kann ich keine bzr-Zweige in mein Repository verschieben. Ich möchte wissen, ob es möglich ist, den SSH über Port 80 zu proxyen, damit ich die Zweige verschieben kann.
Ich habe gehört, dass Sie das mit dem Korkenzieher machen können, aber ich bin mir nicht sicher, wie ich das genau machen soll.
Wenn Sie einen funktionierenden Proxy-Server kennen, auf dem Sie dies tun können, erwähnen Sie diese bitte.
man ssh
deckt port: host: hostport auf. Also versuchen Sie esssh 80:server.com
oder so.Antworten:
Eine gute Unternehmensfirewall überprüft den Datenverkehr unabhängig vom Port, sodass ein Portwechsel möglicherweise nicht funktioniert.
Wenn Sie die Kontrolle über den Server haben und es dennoch versuchen möchten, können Sie den sshd-Port in Port 80 ändern. Warnung Wenn auf Port 80 (auf dem Server) etwas anderes ausgeführt wird, funktioniert dies nicht und bedeutet wahrscheinlich, dass Sie vollständig sind SSH-Zugriff auf den Server verlieren!
Sie werden zu bearbeiten müssen
/etc/ssh/sshd_config
und ändernPort
zu80
. Dann renneUnd dann verbinden:
Dein bzr Pfad würde dann ungefähr so aussehen:
bzr+ssh://host:80/path/
Eine andere Methode ist die Verwendung von WebDav. Dies sollte das Firewall-Problem vollständig umgehen, da dies alles auf Port 80 geschieht, Sie jedoch Apache ausführen und eine Reihe von Dingen einrichten müssen:
Ein VPN könnte eine Option sein, aber wenn
ssh
es gesperrt ist, würde ich erwarten, dass dies ebenfalls ausgeschlossen wird.Vielleicht möchten Sie sich einfach mit Ihren Netzwerkadministratoren unterhalten. Du musst etwas tun und sie halten dich auf. Wenn sie einen Grund zum Blockieren haben
ssh
, werden sie extreme Versuche, dies zu umgehen, wahrscheinlich eher negativ sehen ...Kurz gesagt, es könnte sicherer sein, mit ihnen zu sprechen.
quelle
Port
Leitungen hat, eine für jeden Port in der/etc/ssh/sshd_config
Datei.SSH über den Proxy
Wenn die Firewall dies zulässt, können Sie ssh an jedem beliebigen Port ausführen. Voraussetzung ist jedoch, dass der ssh-Server diesen Port überwacht. Es ist unwahrscheinlich, dass Port 80 funktioniert, da die meisten Orte mit Firewalls den Datenverkehr auf diesem Port analysieren und alles blockieren, was nicht HTTP ist. Port 443, normalerweise der HTTPS-Port, funktioniert jedoch häufig, da SSH und HTTPS für das Filtern von Software sehr ähnlich sind, sodass Ihre SSH-Sitzung wie eine HTTPS-Sitzung aussieht. (Es ist möglich, HTTPS und SSH zu unterscheiden. Dies funktioniert also nicht, wenn die Firewall hoch genug ist.)
Wenn Sie die Kontrolle über den Server haben, lassen Sie ihn zusätzlich zu 22 (dem normalen SSH-Port) den Port 443 überwachen. Sie können den Port folgendermaßen konfigurieren
/etc/ssh/sshd_config
: Fügen Sie eine Leitung hinzudazu
Port 22
sollte das schon da sein. Beachten Sie, dass dies voraussetzt, dass der SSH-Server kein HTTPS-Server ist. Wenn dies der Fall ist, müssen Sie einen anderen Port suchen, den die Firewall verwendet, oder Sie müssen einen anderen SSH-Server suchen (siehe Weiterleitung unten).Wenn Sie in Ihrem Webbrowser keinen Webproxy einrichten müssen, können Sie versuchen, eine direkte Verbindung herzustellen:
Wenn das funktioniert, definieren Sie einen Alias in Ihrem
~/.ssh/config
:Wenn Sie in Ihrem Webbrowser einen Webproxy einrichten müssen, weisen Sie ssh an, den Proxy zu durchlaufen. Installieren Sie den Korkenzieher . Definieren Sie einen Alias wie diesen in Ihrem
~/.ssh/config
, wohttp://proxy.acme.com:3128/
ist der Proxy, den Sie für HTTPS verwenden, nach außen (ersetzen Sie ihn durch den richtigen Hostnamen und Port):SSH über SSH
Wenn Sie mit einer der oben beschriebenen Methoden zu einem externen Computer gelangen können, jedoch nicht zu dem Computer, an dem Sie interessiert sind, leiten Sie eine Verbindung weiter. Angenommen, Sie können ssh auf einen Computer mit dem Namen
mygateway
und Sie möchten den SSH-Server erreichenmytarget
, installieren Sie netcat-openbsd aufmygateway
(oder stellen Sie sicher, dass er dennc
Befehl hat, wenn Ubuntu nicht ausgeführt wird ). Fügen Sie dies in Ihre~/.ssh/config
:SSH zu Apache
Wenn der Host, zu dem Sie eine Verbindung herstellen möchten, bereits Apache ausführt und Port 443 überwacht und Sie die Kontrolle über diesen Host haben, können Sie diesen Apache so einrichten, dass er SSH-Verbindungen akzeptiert und weiterleitet. Siehe Tunneln von SSH über HTTP (S) .
quelle
Ich habe gerade eine ausgefeilte Lösung hier gelesen:
http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html
Sie können SSH-Home auf Port 80 ausführen, auch wenn auf Ihrem Home-Server auch ein Webserver auf Port 80 ausgeführt wird.
Angenommen, der Heimserver führt Apache aus. Die Idee besteht darin, mod_proxy auf Ihrem Server zu aktivieren und dann die Verbindung zu localhost (proxy.conf) zu beschränken:
Jetzt können Sie eine HTTP-Verbindungsanforderung an den lokalen Host senden, und der Webserver richtet einen Tunnel für Sie ein. Sie müssen nur sicherstellen, dass der gesamte Datenverkehr über Ihren Proxy geleitet wird:
Stellen Sie sicher, dass localhost-Verbindungen zu SSH nicht privilegiert sind (um zu vermeiden, dass Fremde eintreten ...)
Dies sollte funktionieren, wenn Sie sich hinter einem Router befinden, der nur Port 80 zulässt.
Wenn Sie sich hinter einem Proxy befinden (Sie müssen also einen Proxy in Ihrem Browser einrichten, um das Internet zu erreichen), müssen Sie zunächst einen Tunnel zu Ihrem eigenen Host einrichten und anschließend eine weitere CONNECT-Anforderung innerhalb dieses Tunnels absetzen, um zu Ihrem Host zu gelangen. Dies ist anspruchsvoller, Sie müssen 2 Netcats dafür verwenden.
Alles ist möglich, aber auf eigenes Risiko ...
AKTUALISIEREN:
Oder verwenden Sie einfach eine Webanwendung, mit der Sie über einen Browser SSH erhalten. http://en.wikipedia.org/wiki/Web-based_SSH
quelle
Wenn Sie keine Kontrolle über den Server haben, um den SSH-Port in Port 80 zu ändern, oder wenn Sie kein SSH über Port 80 durchführen können, weil die Firewall die Übertragung solcher Daten über Port 80 blockiert, können Sie TOR versuchen.
TOR ist ein riesiges Netzwerk. Ihr Computer stellt eine Verbindung zu einem anderen Computer irgendwo auf der Welt her. Dieser Computer stellt eine Verbindung zu einem anderen Computer her, bis er den SSH-Server erreicht. Dies ist alles Firewall-freundlich, geschieht auf Port 443 (den Ihr Unternehmen nicht blockiert, oder ... nun, das ist nicht so klug von ihnen). Es ist buchstäblich nur ein riesiger Proxy oder VPN und es ist auch verschlüsselt. Auf diese Weise können Sie auf jeden Host an jedem Port zugreifen (auch auf SSH eines Servers an Port 22).
Schauen Sie es sich online unter www.torproject.org an .
quelle
Es tut mir leid, ich muss Devils Advocate spielen.
Ich weiß, dass es höchstwahrscheinlich einen Grund dafür gibt. Warum öffnet Ihr Netzwerk- / Firewall-Administrator jedoch nicht den bestimmten Port, nach dem Sie suchen? Möchten Sie aus Sicherheitsgründen die Chance nutzen, dass web-inspect nichts verpasst? Wenn es so konfiguriert ist, dass Port 80 für normalen Datenverkehr umgangen wird und Sie sich selbst in Gefahr bringen.
Ich stimme mit ein paar Vorschlägen oben überein, bei denen vpn von Punkt zu Punkt eine sicherere Option sein kann. Auch unter Sicherheitsaspekten würde mich interessieren, warum Sie Sicherheitsrichtlinien wirklich umgehen und warum Sie Ihren Server nicht entweder in ein DMZ- oder Backbone-System für den Zugriff einbinden können. Nur ich. Viel Glück.
quelle