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

  • Hvordan starter du automatisk screen

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 for screen -d -R.
  • Bruk prefiks d eller tmux detach-client eller tmux 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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *