Pornește automat ecranul GNU când intru într-unul pe propriile mele servere. Când am terminat, trebuie să mă detașez. Apoi ieșiți pentru a părăsi ssh. Acest lucru înseamnă că, când intru din nou pe server la un moment dat, pot continua de unde am rămas.

Pot crea un alias (de exemplu) care să detașeze (din interiorul ecranului) ssh?

Comentarii

  • Cum pornești automat screen

Răspunde

Pornirea screen la conectarea la gazda de la distanță (executată pe computerul local):

ssh -t user@host screen 

În ecran sesiune, pe gazda de la distanță, pentru a se detașa și a se deconecta (ceea ce ar încheia sesiunea SSH, cu excepția cazului în care utilizați o conexiune persistentă utilizând o priză de control (adică folosind setarea ControlMaster cu ControlPersist în ~/.ssh/config)):

screen -d 

Mai târziu, pentru a vă conecta și atașați din nou:

ssh -t user@host screen -r 

Rețineți că trebuie să utilizați -t cu ssh, forțând alocarea pseudo-terminală, să înceapă screen în acest fel.

Aliasul de pe gazda la distanță ar fi f sau screen -d, poate detach="screen -d" sau ceva similar.

Pe gazda locală, puteți avea o secțiune în ~/.ssh/config fișier care spune

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

Apoi, ori de câte ori utilizați

ssh myhost-screen 

o screen sesiune ar fi creată (sau re-atașată la) pe gazda specificată, în timp ce

ssh myhost 

nu ar folosi screen.

Notă: RemoteCommand a fost adăugat în OpenSSH 7.6 (2017) -10-03).


Pentru tmux:

  • Utilizați tmux new-session -A -s "%n" în ~/.ssh/config în loc de screen -d -R.
  • Utilizați prefix d sau tmux detach-client sau tmux detach pentru detașare.

Comentarii

  • Frumos, thx. Acasă, acest lucru va funcționa excelent. Nu știam despre ' Forțează alocarea pseudo-tty '. Am testat acest lucru și funcționează.

Răspuns

Când executați comanda ecranului pentru a vă reaminti sau a crea ecranul , După adăugați un shell de părinte, deci vă va ucide conexiunea ssh.

un exemplu pentru uciderea procesului meu părinte dacă părintele este bash

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

Comentarii

  • Thx. Dacă intru de undeva unde nu pot specifica o aplicație de rulat (cum ar fi online ssh app.shellngn.com ) și modific linia de cod la căutați sesiuni ssh, acest lucru va funcționa.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *