¿Hay alguna manera de salir de todas las conexiones SSH y cerrar PuTTY en «un disparo»? Trabajo en Windows 7 y uso PuTTY para SSH en varios hosts de Linux.

Un ejemplo de la forma en que me encuentro trabajando:

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. 

Según lo anterior, ¿alguna forma de pasar de host8 a cerrar PuTTY de una sola vez? A veces me encuentro con hasta 5 o 10 hosts de profundidad. Me doy cuenta de que puedo hacer clic en la X para cerrar la ventana de PuTTY, pero me gusta asegurarme de que mis conexiones SSH se cierren correctamente mediante el comando de salida. También me doy cuenta de que estoy pidiendo consejos sobre cómo aumentar la pereza. Lo descartaré como «¿cómo puedo ser más eficiente?».

Comentarios

  • No es directamente lo que estás preguntando, pero ¿qué tal si presionas ctrl+d varias veces?
  • @UlrichDangel Nunca he usado eso antes, pero también forma rápida de salir de las conexiones rápidamente.
  • ¿Realmente está anidando sesiones ssh de 5 a 10 niveles de profundidad? ¿Se da cuenta de que ‘ está creando un túnel complicado que rebota todos los paquetes en su sesión ssh a través de todos esos hosts? ¿Podrías hacer que el problema desaparezca simplemente no anidando sesiones ssh?
  • @ jw013 No, no me di cuenta de eso, pero tiene sentido. Honestamente, 5-10 niveles fue una exageración, pero estaba tratando de ilustrar mi pregunta sobre » cómo salir limpiamente de Putty de una sola vez. »

Respuesta

Intente usar ssh secuencia de escape de terminación de conexión.

En la sesión ssh, ingrese ~. (punto tilde). No verá los caracteres cuando los escriba, pero la sesión terminará inmediatamente.

$ ~. $ 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). 

Comentarios

  • ¡Genial! Cualquier forma de poner ~. en un alias o función? Solo para darle un nombre fácil de recordar como exitall. Ahora ‘ estoy preguntando demasiado :). Probé algunas cosas en ~/.bashrc pero obtuve -bash: ~.: command not found. Supongo que bash lo ve como una cadena y no una secuencia de escape que viene directamente del teclado.
  • Me gusta la solución ctrl+d también, pero esto responde a mi pregunta de manera más directa. Gracias a todos.
  • @Banjer bash nunca ve ~., es ‘ gestionado por ssh. .
  • @Gilles gotcha, tiene sentido.
  • Y no hay ‘ garantía Mira que PuTTY también hace esto. El cliente CLI ssh necesita esta técnica porque ‘ es CLI. PuTTY es una aplicación GUI y hay formas mucho más fáciles de usar para hacer esto en una GUI.

Respuesta

Simplemente presione Ctrl D y se cerrará la sesión para mantener presionada la tecla ctrl y presione «d» hasta que la ventana desaparezca.

Comentarios

  • Lamentablemente, esto no ‘ t funciona universalmente. Es probable que cualquier sesión que ejecute un editor u otra herramienta de pantalla completa ignore EOT. E incluso bash lo ignorará en medio de una línea de comando. Pruébelo usted mismo: escriba una sola letra y pruebe Ctrl-D.
  • ¿Qué hace Ctrl + D? Quiero decir, ¿existe de manera segura o simplemente mata el proceso?
  • Sale de forma segura. Es un atajo de shell que es lo mismo que escribir ‘ exit ‘ y presionar enter.
  • En realidad, el mío ( Windows git bash & ubuntu bash) emita un logout.
  • sí, creo que exit también llama a logout como ssh las conexiones tienden a no ser sesiones de inicio de sesión.

Responder

Simplemente cierre PuTTY. ( Alt + F4 por defecto IIRC.)

Respuesta

Otra forma es hacer function para ssh:

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

Desafortunadamente, también siempre cerrará la conexión y se cerrará la sesión de la consola después de que termine de trabajar en el sistema remoto.

Tenga en cuenta que debe realizar dicha función en todos sus servidores, de lo contrario, este truco no funcionará . Por cierto, siempre puedes poner la función en ~ / .bashrc o ~ / .whatever_shell_you_use_rc.

Parece un truco un poco sucio en comparación con otros métodos.

Comentarios

  • function no es POSIX; simplemente elimine la palabra clave y debe citar $@ correctamente, o sus argumentos se pasarán después de la división de palabras (malo).

Respuesta

O puede usar exec para reemplazar su proceso de shell con ssh al saltar a otro host:

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 niveles de profundidad no es agradable, ya que el tráfico pasará por todos los demás servidores. Por eso no recomiendo simplemente matar PuTTY o ssh (~.), Ya que (dependiendo de lo que haga) esto podría resultar en procesos huérfanos en los servidores.

Mejor intentar ser menos » perezoso «. Hacer clic con el botón derecho en la barra de título de puttys hace que abrir una nueva sesión sea rápido. Si tiene un servidor» predeterminado «y acepta 1 salto desde ese, la función» Sesión duplicada «es muy útil. Especialmente cuando se usa autenticación de clave pública.

Respuesta

Si no le importa hacer un pequeño script, puede hacerlo.

Script: myssh .sh

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

Llame a través del comando dot:

$ . myssh [email protected] 

Si desea salir de un nivel:

$ exit 

Si desea salir de todos:

$ exit 5 

Comentarios

  • Por supuesto, tendría que copiarlo en todas las computadoras desde las que pueda ssh. Además, ¿no sería ‘ t sería más fácil simplemente definir una función de shell llamada ssh? Eso evitaría el período anterior, etc.

Responder

Escribir logout en la ventana del terminal putty lo hace por yo:

richard@forevermore:~ > logout 

Cierra la conexión ssh y sale de la aplicación Putty.

Comentarios

  • Creo que no ‘ no leíste la pregunta correctamente. OP hace ssh host1, y luego, desde host1, hace ssh host8. En ese momento, un logout haría lo mismo que el exit comando que ya conocen: salir de host8 y ponerlos de nuevo en host1.
  • Ok, ya veo, mi mal.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *