¿Hay alguna manera de retroceder en todas las conexiones SSH y cerrar PuTTY en "one shot"? Trabajo en Windows 7 y uso PuTTY para SSH en varios hosts 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 hasta 5 o 10 hosts de profundidad. Me doy cuenta de que puedo hacer clic en la X para cerrar la ventana 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. Simplemente lo escribiré como "¿cómo puedo ser más eficiente"?
ctrl+d
varias veces?Respuestas:
Intente usar la
ssh
secuencia de escape de terminación de conexión.En la
ssh
sesión, ingrese~.
(tilde dot). No verá los caracteres cuando los escriba, pero la sesión finalizará de inmediato.Desde
man 1 ssh
fuente
~.
un alias o función? Solo para darle un nombre fácil de recordarexitall
. Ahora estoy pidiendo demasiado :). Intenté algunas cosas en~/.bashrc
pero obtener-bash: ~.: command not found
. Supongo que bash lo ve como una cadena y no como una secuencia de escape que proviene directamente del teclado.ctrl+d
solución, pero esto responde mi pregunta más directamente. Gracias a todos.~.
, se manejassh
solo.ssh
cliente CLI 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.Simplemente presione CtrlDy se cerrará la sesión para mantener presionada la tecla Ctrl y presione "d" hasta que la ventana desaparezca.
fuente
EOT
. E inclusobash
lo ignorará en medio de una línea de comando. Pruébelo usted mismo: escriba una sola letra e inténteloCtrl-D
.logout
.Simplemente cierre PuTTY. ( Alt+ F4por defecto IIRC.)
fuente
Otra forma es hacer
function
parassh
:Desafortunadamente, siempre cerrará la conexión y cerrará sesión desde 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 puede poner la función en ~ / .bashrc o ~ / .whatever_shell_you_use_rc.
Parece un truco un poco sucio en comparación con la forma de uther.
fuente
function
no es POSIX: simplemente elimine la palabra clave, y necesita citar$@
correctamente, o sus argumentos se pasarán después de la división de palabras (incorrecta).O podría usar
exec
para reemplazar su proceso de shellssh
cuando salte a otro host:5 niveles de profundidad no es bonito, ya que el tráfico pasará a través de todos los demás servidores. Por eso no recomiendo simplemente matar a PuTTY o ssh (~.), Ya que (dependiendo de lo que hagas) esto podría resultar en procesos huérfanos en los servidores.
Es mejor tratar de ser menos "vago". Hacer clic 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, la función "Duplicar sesión" es muy útil. Especialmente cuando se usa la autenticación de pubkey.
fuente
Si no le importa hacer una pequeña secuencia de comandos, puede hacerlo.
Script: myssh.sh
Llamar a través del comando punto:
Si quieres salir de un nivel:
Si quieres salir de todo:
fuente
Escribir cierre de sesión en la ventana de terminal de masilla lo hace por mí:
Cierra la conexión ssh y cierra la aplicación Putty.
fuente
ssh host1
, y luego, de lohost1
hacessh host8
. En ese momento, alogout
haría lo mismo que elexit
comando que ya conocen: salirhost8
y volver a colocarloshost1
.