Jeg starter automatisk gnu-skjermen når jeg ssh til en på mine egne servere. Når jeg er ferdig, må jeg løsne meg. Gå deretter av for å avslutte ssh. Dette betyr at når jeg ssh på serveren igjen på et tidspunkt, kan jeg fortsette der jeg slapp.
Kan jeg lage et alias (for eksempel) som (fra skjermen) løsner og slipper ssh?
Kommentarer
Svar
Starter screen
når du logger på den eksterne verten (utført på din lokale maskin):
ssh -t user@host screen
På skjermen økt, på den eksterne verten, for å løsne og logge ut (som vil avslutte SSH-økten med mindre du bruker en vedvarende tilkobling ved hjelp av en kontrollsokkel (dvs. bruker innstillingen ControlMaster
id = «5a41308bc0″>
i ~/.ssh/config
)):
screen -d
Senere, for å logge på og fest på nytt:
ssh -t user@host screen -r
Merk at du må bruke -t
med ssh
, tvinger pseudo-terminal tildeling, til å starte screen
på denne måten.
Aliaset på den eksterne verten ville være f eller screen -d
, kanskje detach="screen -d"
eller noe lignende.
På den lokale verten kan du ha en seksjon i ~/.ssh/config
fil som sier
Host *-screen RequestTTY force RemoteCommand screen -d -R Host myhost myhost-screen HostName myhost.somedomain.example.com User myname
Så hver gang du bruker
ssh myhost-screen
en screen
økt vil bli opprettet (eller festet til) på den angitte verten, mens
ssh myhost
vil ikke bruke screen
.
Merk: RemoteCommand
ble lagt til i OpenSSH 7.6 (2017 -10-03).
For tmux
:
- Bruk
tmux new-session -A -s "%n"
i~/.ssh/config
i stedet forscreen -d -R
. - Bruk prefiks d eller
tmux detach-client
ellertmux detach
for å løsne.
Kommentarer
- Hyggelig, thx. Hjemme vil dette fungere bra. Jeg visste ikke om ' Tving pseudo-tty-tildeling '. Jeg testet dette og det fungerer.
Svar
Når du utfører skjermkommandoen for å hente frem eller lage skjermen , Etter legger du til en avlivning av foreldreskallet ditt, så du vil drepe deg ssh-tilkobling.
et eksempel for å drepe foreldreprosessen min hvis foreldrene er bash
kill $( ps -ax -o pid,ppid,args | grep "^$$ " | grep bash | awk "{print $2} " )
Kommentarer
- Thx. Hvis jeg ssh inn fra et sted hvor jeg ikke kan spesifisere en app som skal kjøres (som online ssh app.shellngn.com ), og jeg endrer kodelinjen din til se etter ssh-økter, dette vil fungere.
screen