Ich habe ein Bash-Skript mit ssh Remote-Weiterleitung, so dass ich den Computer anmelden kann, auf dem das Skript ausgeführt wird. Ich benutze ein Skript, weil das Netzwerk regelmäßig eine Art von Auth benötigt. Wenn ssh fehlschlägt, versuche ich es erneut. Das Skript ist im Grunde diese:Warum wird ssh nach einem Ausfall der Remote-Weiterleitung nicht beendet?
while [ 1 ]; do
authentication
ssh -N -v -R 9999:localhost:22 [email protected]$remote_ip
done
Das Problem ist, ssh wird nicht Ausfahrt auf Remote-Vorwärts-Ausfall wie unten:
debug1: Remote: Forwarding listen address "localhost" overridden by server GatewayPorts
debug1: remote forward failure for: listen 9999, connect localhost:22
Warning: remote port forwarding failed for listen port 9999
debug1: All remote forwarding requests processed
den Fehler zu dieser Ursachen zurückzuführen ist:
debug1: server_input_global_request: tcpip-forward listen localhost port 9999
debug1: Local forwarding listening on 0.0.0.0 port 9999.
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 9999
Die Die vorherige Sitzung endet noch nicht und der Port wird verwendet.
Gibt es eine Möglichkeit zu überprüfen, ob ssh erfolgreich ist oder nicht? Und als Programmierer kann ich wirklich nicht verstehen, warum es so entworfen wurde. Was ist der Grund für dieses Design?