Jeg starter automatisk GNU-skærmen, når jeg ssh ind på en på mine egne servere. Når jeg er færdig, skal jeg tage den af. Gå derefter ud for at afslutte ssh. Det betyder, at når jeg ssh ind på serveren igen på et tidspunkt, kan jeg fortsætte, hvor jeg slap.
Kan jeg oprette et alias (for eksempel), der (indenfra skærmen) løsner og slipper ssh?
Kommentarer
Svar
Starter screen
når du logger ind på den eksterne vært (udført på din lokale maskine):
ssh -t user@host screen
På skærmen session på den eksterne vært for at løsne og logge ud (hvilket ville afslutte SSH-sessionen, medmindre du bruger en vedvarende forbindelse ved hjælp af et kontrolstik (dvs. bruger indstillingen ControlMaster
med ControlPersist
i ~/.ssh/config
)):
screen -d
Senere for at logge ind og vedhæft igen:
ssh -t user@host screen -r
Bemærk, at du skal bruge -t
med ssh
, der tvinger pseudo-terminalallokering, til at starte screen
på denne måde.
Aliaset på den eksterne vært ville være f eller screen -d
, måske detach="screen -d"
eller noget lignende.
På den lokale vært kan du have en sektion i din ~/.ssh/config
fil, der siger
Host *-screen RequestTTY force RemoteCommand screen -d -R Host myhost myhost-screen HostName myhost.somedomain.example.com User myname
Så hver gang du bruger
ssh myhost-screen
en screen
session oprettes (eller tilknyttes igen) på den angivne vært, mens
ssh myhost
bruger ikke screen
.
Bemærk: RemoteCommand
blev tilføjet i OpenSSH 7.6 (2017 -10-03).
For tmux
:
- Brug
tmux new-session -A -s "%n"
i~/.ssh/config
i stedet forscreen -d -R
. - Brug prefix d eller
tmux detach-client
ellertmux detach
for at løsne dem.
Kommentarer
- Dejligt, thx. Derhjemme fungerer dette godt. Jeg vidste ikke om ' Tving pseudo-tty-tildeling '. Jeg testede dette, og det fungerer.
Svar
Når du udfører din skærmkommando for at hente eller oprette din skærm , Efter tilføjer du en dræb af din forælderskal, så du dræber din ssh-forbindelse.
et eksempel på at dræbe min forældreproces, hvis forælderen er bash
kill $( ps -ax -o pid,ppid,args | grep "^$$ " | grep bash | awk "{print $2} " )
Kommentarer
- Thx. Hvis jeg ssh ind fra et sted, hvor jeg ikke kan angive en app, der skal køres (som online ssh app.shellngn.com ), og jeg ændrer din kodelinje til kig efter ssh-sessioner, dette fungerer.
screen