web-dev-qa-db-fra.com

quitter toutes les connexions SSH en une seule commande et fermer PuTTY

Existe-t-il un moyen de se retirer de toutes les connexions SSH et de fermer PuTTY en "un coup"? Je travaille dans Windows 7 et j'utilise PuTTY to SSH sur divers hôtes Linux.

Un exemple de la façon dont je me retrouve à travailler:

SSH to Host1 with PuTTY...
banjer@Host1:~> #...doin some work...ooh! need to go check something on Host8...
banjer@Host1:~> ssh Host8
banjer@Host8:~> #...doin some work...OK time for lunch. lets close PuTTY...
banjer@Host8:~> exit
banjer@Host1:~> exit
PuTTY closes.

Par ci-dessus, est-il possible de passer de Host8 à la fermeture de PuTTY en une seule fois? Parfois, je me retrouve jusqu'à 5 ou 10 hôtes en profondeur. Je me rends compte que je peux cliquer sur le X pour fermer la fenêtre PuTTY, mais j'aime m'assurer que mes connexions SSH se ferment correctement en utilisant la commande exit. Je me rends également compte que je demande des conseils pour augmenter la paresse. Je vais simplement l'écrire comme "comment puis-je être plus efficace".

20
Banjer

Essayez d'utiliser la séquence d'échappement de fin de connexion ssh.

Dans la session ssh, entrez ~. (point tilde). Vous ne verrez pas les caractères lorsque vous les tapez, mais la session se terminera immédiatement.

$ ~.
$ Connection to me.myhost.com closed.  

De man 1 ssh

The supported escapes (assuming the default ‘~’) are:
 ~.      Disconnect.
 ~^Z     Background ssh.
 ~#      List forwarded connections.
 ~&      Background ssh at logout when waiting for forwarded 
         connection / X11 sessions to terminate.
 ~?      Display a list of escape characters.
 ~B      Send a BREAK to the remote system (only useful for SSH protocol
         version 2 and if the peer supports it).
 ~C      Open command line.  Currently this allows the addition of port 
         forwardings using the -L, -R and -D options (see above). It also
         allows the cancellation of existing remote port-forwardings using 
         -KR[bind_address:]port.  !command allows the user to execute a 
         local command if the PermitLocalCommand option is enabled in
         ssh_config(5).  Basic help is available, using the -h option.
 ~R      Request rekeying of the connection (only useful for SSH protocol 
         version 2 and if the peer supports it).
30
George M

Appuyez simplement sur CtrlD et il vous déconnectera pour maintenir ctrl et appuyez sur "d" jusqu'à ce que la fenêtre disparaisse.

13
Joe

Fermez simplement PuTTY. (Alt+F4 par défaut IIRC.)

Ou vous pouvez utiliser exec pour remplacer votre processus Shell par ssh lorsque vous passez à un autre hôte:

SSH to Host1 with PuTTY...
banjer@Host1:~> #...doin some work...ooh! need to go check something on Host8...
banjer@Host1:~> exec ssh Host8
banjer@Host8:~> #...doin some work...OK time for lunch. lets close PuTTY...
banjer@Host8:~> exit
PuTTY closes.

5 niveaux de profondeur n'est pas joli, car le trafic passera par tous les autres serveurs. Pour cette raison, je ne recommande pas de simplement tuer PuTTY ou ssh (~.), Car (selon ce que vous faites), cela pourrait entraîner des processus orphelins sur les serveurs.

Mieux vaut essayer d'être moins "paresseux". Un clic droit sur la barre de titre de puttys permet d'ouvrir rapidement une nouvelle session. Si vous avez un serveur "par défaut" et acceptez 1 saut depuis celui-ci, la fonction "Duplicate Session" est très utile. Surtout lors de l'utilisation de l'authentification pubkey.

2
MattBianco

Une autre façon est de créer function pour ssh:

   function ssh(){ /usr/bin/ssh $@ ; exit ; } 

Malheureusement, il fermera également toujours la connexion et la déconnexion de la console une fois que vous aurez terminé de travailler sur le système distant.

Notez que vous devez faire une telle fonction sur tous vos serveurs, sinon ce hack ne fonctionnera pas. Btw vous pouvez toujours mettre la fonction dans ~/.bashrc ou ~/.wwhat_Shell_you_use_rc.

Cela ressemble un peu à un hack sale par rapport à la façon dont uther.

2
rush

Si cela ne vous dérange pas de faire un peu de script, vous pouvez le faire.

Script: myssh.sh

#!/bin/bash
ssh $1
if [ $? -eq 5 ]; then
 exit 5
fi

Appelez via la commande dot:

$ . myssh [email protected]

Si vous souhaitez quitter un niveau:

$ exit

Si vous souhaitez tout quitter:

$ exit 5
2
Moonthief