Gewusst wie: SSH auf einem anderen Port als 22

151

Ich habe zwei Computer hinter dem gleichen Router. Nennen wir sie A und B.

A kann auf folgende Weise von SSH zu B: ssh usr@<internal ip of computer>

B kann SSH zu A, indem es dasselbe tut, aber die externe IP muss verwendet werden. Ich habe den Port 22 meines Routers an die IP von Computer A weitergeleitet, damit alles für mich Sinn macht.

Ich möchte jedoch auch Port 26 an Computer B und SSH von außerhalb des Netzwerks weiterleiten, indem ich die externe IP für beide verwende, aber entweder Port 22 oder 26 spezifiziere, um effektiv auszuwählen, welcher Computer verwendet werden soll.

Ich habe versucht, Port 26 über OUTPUT von iptablesA und INPUT von B zuzulassen , aber das schien nicht zu funktionieren. Ich habe auch Port 26 an die interne IP von B weitergeleitet (über den Router), wie ich es mit 22 für A getan habe.

Folgendes bekomme ich, wenn ich versuche, über die externe IP und den Port 26 von A nach B zu SSH zu wechseln:

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

Versionen:

  • A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14. März 2012
  • B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10. Mai 2012

A hat 12.04 Ubuntu, B ist ein Raspberry Pi mit Raspbian.

EDIT: Etwas , das ich setzen in vergessen zu: Ich habe versucht , die SSH - Konfigurationsdatei schaltend (ich fand es ist /etc/ssh/ssh_config) ich unkommentiert (deleted die #) die Zeile mit Portund geändert 22zu 26. Es gab mir die Verbindung abgelehnte Nachricht noch. (Ich habe ohne Erfolg neu gestartet.)

Gary
quelle
Soll SSH auf Port 22 oder 26 der zweiten Maschine ausgeführt werden?
Nerdfest
1
Beachten Sie, dass / etc / ssh / ssh_config die ssh-Client-Konfiguration ist. Wobei / etc / ssh / sshd_config die ssh-Daemon-Konfiguration ist.
Steakunderscore

Antworten:

45

Anscheinend läuft auf dem zweiten Computer kein SSH auf Port 26. Sie können entweder die Portnummer auf diesem Computer auf 26 ändern.

Entweder editieren /etc/ssh/sshd_configund nicht vergessen, SSH neu zu starten oder auf 22 zu belassen, aber Port 26 des Routers an Port 22 des zweiten Rechners weiterleiten. Vergessen Sie auch nicht, die Firewall-Einstellungen auf dem zweiten Computer zu ändern, um die Verbindungen zuzulassen.

Nerdfest
quelle
Ahhh ... also muss sich sshd_config ändern, nicht ssh_config?
Gary
2
Richtig. sshd ist der Dienst (d ist für Daemon). Bearbeiten Sie die Konfigurationsdatei (mit sudo gedit) und starten Sie den Dienst mit "sudo service ssh restart" neu.
Nerdfest
2
Problem gelöst. Musste auch keine Firewall-Einstellungen ändern.
Gary
371

Wenn Sie sich auf einem Linux-System befinden und über Port 26 eine Verbindung zu einem SSH-Server herstellen möchten, können Sie den folgenden Befehl verwenden.

ssh [email protected] -p 26

Hinweis:

  1. Ersetzen Sie die Server-IP durch die IP-Adresse oder den DNS-Namen Ihres Servers.
  2. Ändern Sie Ihre Portnummer wie eingestellt.
  3. Wenn Sie benutzerdefinierten Port-SSH verwenden, ist derselbe Port für ausgehende und eingehende Verbindungen in der Firewall am häufigsten zulässig, da die Verbindung sonst nicht hergestellt werden kann
Shiv Singh
quelle
17
Dieser sollte als korrekt markiert sein.
Ken_oy
1
Ich bin damit einverstanden, dass dies die richtige Antwort ist. Dieser ist einfach und geht auf den Punkt.
m4l490n
1
@ Gary Markieren Sie diese als richtig
Trauer Poesie
7
Nein, das ist NICHT die richtige Antwort. OP hatte Probleme mit dem Daemon, der den gewünschten Port nicht überwacht. Er bat eindeutig um Hilfe bei der SSH-Server- und / oder NAT-Konfiguration, aber die aktuelle Antwort ignoriert den ursprünglichen Beitrag und beschreibt die Client-Befehlsoption, die OP bereits bekannt ist. Ich frage mich, wie diese Antwort so viele positive Stimmen bekommen hat.
nnovich-OK
2
Dies ist für die Mehrheit richtig, für das OP-Problem jedoch nicht.
Ultrasonic54321
9

Ich benutze Port 22 nur für den ssh-Zugang im Intranet.

Für den Zugriff über das Internet verwende ich einen benutzerdefinierten (ungewöhnlichen) Port. Dies hat den Vorteil, dass ich die Last reduziere, die von Script-Kids erzeugt wird, die Port 22 nach "bekannten Benutzernamen" durchsuchen.

Die externen SSHD-Prozesse werden vom internen Prozess gesteuert xinetdund laufen parallel dazu . Im folgenden Beispiel verwende ich den Port 12345: sshd

Sie können dies in eine beliebige verfügbare freie Portnummer auf Ihrem System ändern. Ein höherer Wert macht es möglicherweise auch unwahrscheinlicher, dass dieser Port von einem "Quick Port Scan" gescannt wird .

Die xinetdKonfiguration ist:

service ssh-external
{
    socket_type = stream
    wait = no
    protocol = tcp
    type = UNLISTED
    user = root
    server = /usr/sbin/sshd
    server_args = -i -f  /etc/ssh/external-sshd.config
    port = 12345
    log_on_failure += USERID
}

Die Datei /etc/ssh/external-ssdh.configkann eine Kopie Ihrer üblichen sshdKonfiguration sein. Stellen Sie sicher, dass die folgenden Anweisungen konfiguriert sind:

Port 12345
AddressFamily inet

Ich empfehle außerdem, die Authentifizierung mit öffentlichem Schlüssel zu erzwingen und die Kennwortauthentifizierung für den Internetzugang zu deaktivieren:

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
H.-Dirk Schmitt
quelle
7

Listen-Ports können auch fest mit IP-Adressen verknüpft sein

/ etc / ssh / sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
OasisInDesert
quelle
Dies sollte ein Kommentar sein, keine Antwort.
Pablo Pazos
1

Wie ich in einer verwandten Antwort erklärt habe, erlaubt der ssh-Client die Angabe des URI-Formats als ssh://user@host:1234. Zum Beispiel:

ssh  ssh://[email protected]:2222

Dabei ist 2222 die Portnummer. Ersetzen Sie die Portnummer, die Sie stattdessen verwenden möchten. Denken Sie natürlich daran, dass ssh (auf dem Host, zu dem Sie eine Verbindung herstellen möchten) zunächst den angegebenen Port abhören muss, um eine Verbindung zum angegebenen Port herzustellen

Sergiy Kolodyazhnyy
quelle
0

Es ist keine gute Idee, ssh auf dem Standardport (TCP / 22) auszuführen und weder von WAN IP 22 an den Port weiterzuleiten, der ssh-server auf LAN IP verwendet.

Im Allgemeinen sollte der SSH-Serverdienst diesen Port überwachen, um eine Verbindung herzustellen. Sie müssen

  1. Bearbeite am /etc/ssh/sshd_config( beachte das d ) von #Port 22bis Port 26. Dh Kommentar entfernen und Port ändern. Vielleicht besser als 26 wäre etwas zufällig über 42895.
  2. Starten Sie den SSH-Server-Dienst neu

    sudo systemctl restart sshd.service
    

Dann können Sie vom ssh-client aus eine Verbindung herstellen

ssh user@serverNameOrIP -p 42895

Bonus: mosh

Wenn mosh package auf dem Server installiert ist, verwenden Sie

mosh --ssh="ssh -p 42895" serverNameOrIP
Pablo A
quelle