Im Rahmen meiner Bemühungen, das Rauschen in Protokollen zu reduzieren und die Erkennbarkeit geringfügig zu verringern (und zusätzlich zu fail2ban nur die Authentifizierung mit öffentlichem Schlüssel usw. zuzulassen), ändere ich routinemäßig sshd-Ports auf Servern, die ich auf einen anderen Port eingerichtet habe, beispielsweise 5492. Derzeit Ich füge entweder -p 5492 an meinen Befehl ssh an oder füge den Port für jeden bestimmten Server zu meinem hinzu ssh_config
.
Gibt es eine Möglichkeit, ssh so zu konfigurieren, dass versucht wird, eine Verbindung zu Port 22 und Port 5492 herzustellen, wenn Port 22 nicht funktioniert?
ssh
command-line
Riley
quelle
quelle
ssh
Präsenz nach außen.Antworten:
Sie könnten ein Shell-Skript umwickeln,
ssh
aber esssh
selbst wird es nicht tun.Eine Möglichkeit, eine Bash-Funktion zu verwenden, ist folgende
~/.bashrc
:Übrigens wird empfohlen, für Systemdienste
root
reservierte Ports zu verwenden,ssh
um zu vermeiden, dass Benutzer einen Prozess haben, der beispielsweise Port 5492 abhört. Andernfalls spielen sie möglicherweise den Mann in der Mitte und erfassen möglicherweise Anmeldedaten. Verwenden Sie also einen Port <1024.quelle
ssh
ungleich Null zurückgibt. Ein triviales Beispiel wäressh user@server false
.command
jetzt geschrieben . Ich wollte nur eine Rekursion vermeiden, wie Sie richtig erraten haben.ssh
Wenn ein SSH-Fehler auftritt (im Gegensatz zum fehlgeschlagenen Remote-Befehl), wird er mit dem Status 255 beendet. Sollte alsocommand ssh -p 22 "$@"; if [ "$?" -eq 255 ]; then command ssh -p 5492 "$@"; fi
funktionieren.ssh
selbst kann dies überMatch
dokumentiert in tun,ssh_config(5)
obwohl die Dokumentation auf Beispielen etwas spärlich ist. Diese Form kann geeignet sein, wenn man die Komplexität in die SSH-Konfiguration verschieben möchte, obwohl sie durch die Einschränkungen derssh_config(5)
Syntax eingeschränkt ist und möglicherweise ein wenig an dem gewünschten Ergebnis herumspielen muss. Insbesondere kann der benutzerdefinierte Port entweder nicht oder falsch aus dem vorherigenMatch
Versuch festgelegt werden. Aus diesem Grund wird es im Folgenden beim Testen zweimal oder einmal als Standard festgelegt und beim Festlegen der kanonischen Standardeinstellungen nicht festgelegt.is-ssh-up
Überprüft lediglich, ob etwas auf den angegebenen Port reagiert und möglicherweise so aussiehtquelle
Sie können die Platzhalterfunktion von verwenden
~.ssh/config
, um diesen Eintrag in Ihre Liste aufzunehmen:Dies wird jedoch nicht von alleine auf 22 zurückfallen.
Wenn Sie es am Ende setzen, können Sie es dennoch für die Hosts überschreiben, für die Sie 22 benötigen, indem Sie einen anderen Wert darüber setzen. (Und Sie können es jederzeit in der Befehlszeile überschreiben.)
quelle