Ich starte den Gnu-Bildschirm automatisch, wenn ich ssh in einen auf meinen eigenen Servern ssh. Wenn ich fertig bin, muss ich mich lösen. Beenden Sie dann ssh, um ssh zu beenden. Dies bedeutet, dass ich dort weitermachen kann, wo ich aufgehört habe, wenn ich irgendwann wieder auf den Server ssh.

Kann ich (zum Beispiel) einen Alias erstellen, der (innerhalb des Bildschirms) ssh löst und löscht?

Kommentare

  • Wie startet man automatisch screen

Antwort

Starten von screen beim Anmelden am Remote-Host (auf Ihrem lokalen Computer ausgeführt):

ssh -t user@host screen 

Auf dem Bildschirm Sitzung auf dem Remote-Host zum Trennen und Abmelden (wodurch die SSH-Sitzung beendet wird, wenn Sie keine dauerhafte Verbindung über einen Control Socket verwenden (dh die Einstellung ControlMaster mit ControlPersist in ~/.ssh/config)):

screen -d 

Später anmelden und fügen Sie erneut hinzu:

ssh -t user@host screen -r 

Beachten Sie, dass Sie -t mit erzwingt die Zuweisung von Pseudo-Terminals, um screen auf diese Weise zu starten.

Der Alias auf dem Remote-Host wäre f oder screen -d, vielleicht detach="screen -d" oder ähnliches.

Auf dem lokalen Host könnten Sie einen Abschnitt in Ihrem haben ~/.ssh/config Datei mit der Aufschrift

Host *-screen RequestTTY force RemoteCommand screen -d -R Host myhost myhost-screen HostName myhost.somedomain.example.com User myname 

Wann immer Sie

ssh myhost-screen 

Auf dem angegebenen Host wird eine screen -Sitzung erstellt (oder erneut angehängt), während

ssh myhost 

würde screen nicht verwenden.

Hinweis: RemoteCommand wurde in OpenSSH 7.6 (2017) hinzugefügt -10-03).


Für tmux:

  • Verwenden Sie tmux new-session -A -s "%n" in ~/.ssh/config anstelle von screen -d -R.
  • Verwenden Sie Präfix d oder tmux detach-client oder tmux detach zum Trennen.

Kommentare

  • Schön, danke. Zu Hause wird das super funktionieren. Ich wusste nichts über ' Pseudo-tty-Zuweisung erzwingen '. Ich habe dies getestet und es funktioniert.

Antwort

Wenn Sie Ihren Bildschirmbefehl ausführen, um Ihren Bildschirm abzurufen oder zu erstellen , Nach fügen Sie einen Kill Ihrer übergeordneten Shell hinzu, sodass Sie Ihre SSH-Verbindung beenden.

Ein Beispiel zum Beenden meines übergeordneten Prozesses, wenn der übergeordnete Prozess bash ist.

kill $( ps -ax -o pid,ppid,args | grep "^$$ " | grep bash | awk "{print $2} " ) 

Kommentare

  • Thx. Wenn ich von einem Ort aus einchecke, an dem ich keine auszuführende App angeben kann (z. B. online ssh app.shellngn.com ) und Ihre Codezeile auf ändere Suchen Sie nach SSH-Sitzungen, dies wird funktionieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.