Wie verbinde ich mich per SSH von einem bestimmten Port?

Wie verbinde ich mich per SSH von einem bestimmten Port?

Ich weiß, wie ich per SSH eine Verbindung zu einem bestimmten Port herstelle.

ssh user@remotehostip -p XXX

Gibt es eine Möglichkeit, SSH einzurichtenausder Port, den mein lokaler Computer verwenden wird?

Antwort1

Das ist nicht ohne weiteres möglich. Wie das geht, hängt davon ab, wo der Quellport zu sehen sein soll: Auch lokal oder reicht es, wenn es aus Sicht des externen Netzes der richtige Port ist?

Sie können den SSH-Client in einem LXC-Container ausführen. Ich habe das noch nie gemacht und kann es Ihnen daher nicht im Detail erklären. Aber Sie erstellen eine virtuelle Netzwerkschnittstelle und hängen sie an diesen Container an, sodass dieser sshdiese Schnittstelle verwendet, da es die einzige (externe) Schnittstelle ist, die er sieht.

Auf dem Hostsystem sollte es möglich sein, zu erkennen, dass ein Paket von dieser Schnittstelle kommt. Daher können Sie Netfilters NAT (SNAT) verwenden, um die Quelladresse mit etwas wie Folgendem umzuschreiben:

iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234

Dies funktioniert natürlich nicht (oder wird komplizierter), wenn Sie eine Verbindung zu anderen Ports als 22 herstellen.

Antwort2

Die Befehlssyntax, nach der Sie suchen, ist möglicherweise diese. ssh -p XXX user@remotehostip Sie müssen die Reihenfolge der Optionen ändern. Probieren Sie es jetzt aus, bei mir funktioniert es. Freundliche Grüße.

Antwort3

Eine einfache Lösung hierfür besteht darin, den eingehenden Port auf einen beliebigen Wert und den lokalen Port auf 22 einzustellen, wenn Sie die Portweiterleitung über Ihren Router durchführen. Ihr Computer nimmt weiterhin wie gewohnt SSH-Verbindungen über 22 auf, aber um tatsächlich eine Verbindung von außerhalb Ihres Netzwerks herzustellen, verwenden Sie Ihren eingehenden Port. Wenn Sie nur verhindern möchten, dass Bots Ihren Computer über 22 überlasten, sollte dies funktionieren.

Dies hilft Ihnen bei Ihrem speziellen Problem vielleicht nicht, aber ich könnte mir vorstellen, dass viele Leute aus diesem Grund hier landen.

Antwort4

Aufbauend auf der Antwort von Hauke ​​Laging ohne Container reicht es aus, vor der Ausführung des SSH-Clients diese iptables-Regel hinzuzufügen:

iptables -t nat -A POSTROUTING -d <remotehostip> -p tcp --dport 22 -j SNAT --to-source :1234

Die Regel kann entfernt werden, nachdem die SSH-Sitzung geöffnet wurde.

verwandte Informationen