Je démarre automatiquement lécran gnu lorsque je ssh dans un sur mes propres serveurs. Quand jai fini, je dois me détacher. Puis quittez pour quitter ssh. Cela signifie que lorsque je ssh dans le serveur à un moment donné, je peux continuer là où je métais arrêté.

Puis-je créer un alias (par exemple) qui (à partir de lécran) détachera et supprimera ssh?

Commentaires

  • Comment démarrer automatiquement screen

Réponse

Démarrage de screen lors de la connexion sur lhôte distant (exécuté sur votre machine locale):

ssh -t user@host screen 

Dans lécran session, sur lhôte distant, pour se détacher et se déconnecter (ce qui mettrait fin à la session SSH à moins que vous nutilisiez une connexion persistante à laide dun socket de contrôle (cest-à-dire en utilisant le paramètre ControlMaster avec ControlPersist dans ~/.ssh/config)):

screen -d 

Plus tard, pour vous connecter et rattachez:

ssh -t user@host screen -r 

Notez que vous devez utiliser -t avec ssh, forçant lallocation de pseudo-terminal, à démarrer screen de cette manière.

Lalias sur lhôte distant serait f ou screen -d, peut-être detach="screen -d" ou quelque chose de similaire.

Sur lhôte local, vous pourriez avoir une section dans votre ~/.ssh/config fichier disant

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

Ensuite, chaque fois que vous utilisez

ssh myhost-screen 

une session screen serait créée (ou rattachée à) sur lhôte spécifié, tandis que

ssh myhost 

nutiliserait pas screen.

Remarque: RemoteCommand a été ajouté dans OpenSSH 7.6 (2017 -10-03).


Pour tmux:

  • Utilisez tmux new-session -A -s "%n" dans ~/.ssh/config au lieu de screen -d -R.
  • Utilisez prefix d ou tmux detach-client ou tmux detach pour détacher.

Commentaires

  • Sympa, merci. À la maison, cela fonctionnera très bien. Je ne connaissais pas ' Forcer lallocation de pseudo-tty '. Jai testé cela et cela fonctionne.

Réponse

Lorsque vous exécutez votre commande décran pour rappeler ou créer votre écran , Après vous ajoutez un kill de votre shell parent, vous allez donc tuer votre connexion ssh.

un exemple pour tuer mon processus parent si le parent est bash

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

Commentaires

  • Thx. Si je ssh depuis un endroit où je ne peux pas spécifier une application à exécuter (comme ssh en ligne app.shellngn.com ), et je modifie votre ligne de code en recherchez des sessions ssh, cela fonctionnera.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *