Avvio automaticamente gnu screen quando eseguo ssh in uno sui miei server. Quando ho finito, devo staccarmi. Quindi esci per uscire da ssh. Ciò significa che quando ad un certo punto entro di nuovo nel server, posso continuare da dove avevo interrotto.
Posso creare un alias (ad esempio) che (dallinterno dello schermo) scollegherà e rilascerà ssh?
Commenti
Risposta
Avvio di screen
quando si accede allhost remoto (eseguito sulla macchina locale):
ssh -t user@host screen
Nella schermata sessione, sullhost remoto, per scollegarsi e disconnettersi (il che terminerebbe la sessione SSH a meno che non si utilizzi una connessione persistente utilizzando un socket di controllo (ovvero utilizzando limpostazione ControlMaster
con ControlPersist
in ~/.ssh/config
)):
screen -d
Successivamente, per accedere e ricollega:
ssh -t user@host screen -r
Tieni presente che devi utilizzare -t
con ssh
, forzando lallocazione dello pseudo-terminale, per avviare screen
in questo modo.
Lalias sullhost remoto sarebbe f oppure screen -d
, forse detach="screen -d"
o qualcosa di simile.
Nellhost locale, potresti avere una sezione nel tuo ~/.ssh/config
file contenente
Host *-screen RequestTTY force RemoteCommand screen -d -R Host myhost myhost-screen HostName myhost.somedomain.example.com User myname
Quindi, ogni volta che utilizzi
ssh myhost-screen
una screen
verrà creata (o ricollegata a) sullhost specificato, mentre
ssh myhost
non utilizzerebbe screen
.
Nota: RemoteCommand
è stato aggiunto in OpenSSH 7.6 (2017 -10-03).
Per tmux
:
- Utilizza
tmux new-session -A -s "%n"
in~/.ssh/config
invece discreen -d -R
. - Utilizza prefix d o
tmux detach-client
otmux detach
per scollegare.
Commenti
- Gentile, grazie. A casa funzionerà benissimo. Non sapevo di ' Forza allocazione pseudo-tty '. Lho provato e funziona.
Rispondi
Quando esegui il comando sullo schermo per richiamare o creare lo schermo , Dopo aggiungi un kill della tua shell genitore, così ucciderai la tua connessione ssh.
un esempio per uccidere il mio processo genitore se il genitore è bash
kill $( ps -ax -o pid,ppid,args | grep "^$$ " | grep bash | awk "{print $2} " )
Commenti
- Thx. Se eseguo ssh da un punto in cui non riesco a specificare unapp da eseguire (come online ssh app.shellngn.com ) e modifico la riga di codice cerca le sessioni ssh, funzionerà.
screen