Wie man einen Computer ssht, der sich hinter einer Firewall befindet

1

Angenommen, ich habe drei Computer

  1. home mein Computer zu Hause
  2. work Mein Computer bei der Arbeit
  3. server mein Server

Ich kann wegen der Firewall meines Unternehmens keine Verbindung homezu workssh herstellen. Aber ich kann jeden Computer von der Arbeit trennen. Zum Beispiel kann ich den Servercomputer von der Arbeit trennen. Was ich nicht tun möchte, ist, über die workVerbindung eine Verbindung zum Internet herzustellen (ich möchte auf den Arbeitscomputer zugreifen localhost). Ich lese aus einer Toturial, die ich machen kann:

woork:~# ssh -D 4096 server

Damit kann ich mich aber nur über den Server mit dem Internet verbinden. Ich mag die Inverse , dies zu tun , aber ich kann nicht darauf zugreifen workaus server.

Das Endergebnis ist, Firefox zu öffnen homeund zu localhostof zu navigieren work.

Was ist die Lösung für meinen Fall?

Hunsu
quelle
@DavidPostill Kann man das nicht mit einem Tunnel machen?
Hunsu
@DavidPostill du schreibst einen absolut irreführenden Kommentar, er redet von ssh und ssh kann einen Reverse Tunnel machen, der mit einer Firewall umgehen kann, die du nicht kontrollieren kannst.
Barlop
Sie wollen einen Rücktunnel. Das ist ssh-R
Barlop
1
@barlop Es müssen jedoch noch entsprechende Ports geöffnet sein. In der Frage gibt es keinen Hinweis darauf, dass er außerhalb seines Firmennetzwerks ssh kann. In jedem Fall sollte er noch um Erlaubnis bitten, dies zu tun. Eine bessere Lösung wäre sicherlich, dass sein Unternehmen ein VPS einrichtet, wenn er von zu Hause aus arbeiten muss.
DavidPostill
@DavidPostill Offene Ports implizieren normalerweise, dass eingehende Ports geöffnet sind. Und die meisten Firewalls stoppen den Internetzugang nicht, sodass ausgehender Port 80 und ausgehender Port 443 ausgehen können (und möglicherweise eine Menge anderer oder aller ausgehender Ports). Und sicher sollte er um Erlaubnis bitten, wenn er raus soll, aber technisch kann er es tun.
Barlop

Antworten:

2

Wenn Sie eine ausgehende SSH-Verbindung einrichten können, können Sie wahrscheinlich einen Reverse-Tunnel einrichten, um wieder einzusteigen (ich bin mir nicht bewusst, dass die IT dies verbieten kann, aber Sie wissen es nie).

work:~# ssh -fN -R 2222:localhost:22 server

Dann können Sie dies auf dem Server tun:

server:~# ssh -p2222 localhost

Und Sie werden auf magische Weise wieder mit dem SSH-Server-Port auf Ihrer Arbeitsmaschine verbunden. Standardmäßig ist der Port 2222 nur an die Adresse "localhost" gebunden, sodass Verbindungsanfragen von zu Hause aus nicht funktionieren :

home:~# ssh -p2222 server  ;# this will not work

Stattdessen können Sie dies tun:

home:~# ssh server
server:~# ssh -p2222 localhost

oder beides in einem Befehl wie folgt:

home:~# ssh -o ProxyCommand="ssh -W localhost:2222" server

Um Ihnen das Leben .ssh/configzu erleichtern, fügen Sie Folgendes zu Ihrem Zuhause hinzu:

Host work
    ProxyCommand ssh -W localhost:2222
    HostName server

... und nun:

home:~# ssh work

... wird einfach das Richtige tun.

Es ist möglich, die umgekehrte Tunnelbindung zu erstellen, sodass das Proxy-Geschäft nicht erforderlich ist, aber dann wird auch jeder Hacker auf der Welt auf Ihren Tunnel zugreifen (denken, Port 2222 ist nicht standardisiert und daher sicher ist naiv). Die fehlgeschlagenen Zugriffsversuche werden in den Protokollen unter "Arbeit" angezeigt. Die IT-Abteilung wird dies herausfinden und Sie werden entlassen. Natürlich ist der Tunnel allein wahrscheinlich ein Schussverstoß, aber es ist nicht nötig, ihn offensichtlich zu machen.

ams
quelle
Sie schreiben: "Wenn Sie eine ausgehende SSH-Verbindung einrichten können, können Sie wahrscheinlich einen Reverse-Tunnel einrichten, um wieder einzusteigen (mir ist nicht bekannt, dass die IT dies verbieten kann, aber Sie wissen es nie)." Nun, es würde einen Weg geben. Sie könnten ausgehende ssh blockieren. Es ist unwahrscheinlich, dass dies der Fall ist, aber theoretisch könnte dies der Fall sein.
Barlop
@barlop "Wenn Sie eine ausgehende SSH-Verbindung einrichten können ...." bedeutet, dass der Rest des Satzes nur gilt, wenn IT ssh nicht blockiert hat, sodass Ihr Punkt keinen Sinn ergibt. Zufällig blockiert mein Arbeitgeber einige ausgehende SSH-Verbindungen (ich glaube, es gibt eine Whitelist), und ich glaube, alle Verbindungen zu Nicht-Standard-Ports.
ams
Ja, ich muss den Anfang deines Satzes vergessen haben, als ich das geschrieben habe !! Wenn eine ausgehende ssh-Verbindung zulässig ist, können sie einen Reverse-Tunnel oder sogar mehrere Reverse-Tunnel nicht stoppen, da aus ihrer Sicht alles nur wie ssh aussieht, das vollständig verschlüsselt ist.
Barlop
0

Angenommen, Sie haben

work:~#

home:~#

Und Arbeit: ~ # ist die Firewall, die Sie nicht kontrollieren können

Wenn Sie Server schreiben, sehe ich aus dem Kontext (SSH-D 4096 Server), dass Sie SSH-Server bedeuten. (und nicht zB VNC Server). Sie sollten wirklich angeben, es ist klarer. Normalerweise ist ein SSH-Server entweder auf der Arbeit oder zu Hause. Es sollte sich auf dem Computer mit der Firewall befinden, die Sie steuern können, dh Home.

Normalerweise haben Sie auch einen normalen Server, den Sie erreichen möchten, und das ist normalerweise kein SSH-Server. Obwohl es sein kann, gibt es eine Frage mit einem großartigen Beispiel, wo man es haben möchte.

Vielleicht können Sie mehr erklären, welcher Server: ~ # ist, aber ich werde es in der Zwischenzeit auslassen, weil es unnötig erscheint und es nicht klar ist, was Sie damit meinen, weil Sie dann einen SSH-Server haben, z. B. auf der Arbeit Sie würden eine sofortige Arbeit bekommen: ~ #

Also, was Sie tun, ist

Von dem aus, den Sie nicht kontrollieren können, stellen Sie eine ausgehende Verbindung her. Weil die Firewall sie raus lässt.

home:~# START VNC server on e.g. 5901

home:~# START SSHD SERVER on e.g. port 80 <-- whatever the command is to start your sshd.

work:~# ssh -R 1234:127.0.0.1:5901 user@homeip -p 80

home:~# vncviewer 127.0.0.1:1234 

Zuhause sieht Arbeit.

Die für SSH zu erkennenden Schalter sind -L, -R und -D

Und wenn Sie das Client-Programm so mit dem Listening-Port verbinden, dass sich das Client-Programm auf einem anderen Computer als Ihr Listening-Port befindet, muss es -R *:1234:127.0.0.1:5901oder sein0.0.0.0:1234:127.0.0.1:5901

Denken Sie daran, dass dies für etwas wie VNC gilt, aber wenn Sie es für HTTP getan haben, können Sie nur eine Site anzeigen. Es gibt -D, was, wie Sie sehen, lokal ist.

Einige Personen sind zu Hause und möchten bei der Arbeit auf einen Server zugreifen. Dieser Server befindet sich hinter einer Firewall, die sie nicht steuern können.

Wenn Sie jedoch einen Internetzugang wünschen, sind Sie auf der Arbeit und möchten von zu Hause aus auf einen Server zugreifen.

Warum um alles in der Welt kannst du das nicht?

Versuchen Sie, den SSHD-Server zu Hause auf Port 80 oder Port 443 auszuführen, und führen Sie dies aus work~:#ssh homeip -p 443

barlop
quelle
Zuhause hat keine statische IP. Deshalb verwende ich Server, die eine statische IP haben. server bezieht sich auf einen computer (vps), nicht auf einen ssh server.
Hunsu
noip.com/free "Verwenden Sie " yourname.no-ip.info "anstelle einer schwer zu merkenden IP-Adresse oder URL, um remote auf Ihren Computer zuzugreifen. Verwenden Sie außerdem unseren kostenlosen Client für dynamische DNS-Updates, um Ihre dynamische IP-Adresse zu verfolgen Sie können immer auf Ihren Computer zugreifen, auch wenn Ihre IP-Adresse dynamisch zugewiesen wurde. "
DavidPostill
@ RobinA.Meade Sie haben Ihre Frage auf die falsche Antwort geschrieben, es war ams, der eine Zeile wie diese schrieb
Barlop