¿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
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 inclusobash
lo ignorará en medio de una línea de comando. Pruébelo usted mismo: escriba una sola letra y pruebeCtrl-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, desdehost1
, hacessh host8
. En ese momento, unlogout
haría lo mismo que elexit
comando que ya conocen: salir dehost8
y ponerlos de nuevo enhost1
. - Ok, ya veo, mi mal.
~.
en un alias o función? Solo para darle un nombre fácil de recordar comoexitall
. 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.ctrl+d
también, pero esto responde a mi pregunta de manera más directa. Gracias a todos.~.
, es ‘ gestionado porssh
. .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.