Existe uma maneira de sair de todas as conexões SSH e fechar PuTTY em “um tiro”? Eu trabalho no Windows 7 e uso PuTTY para SSH em vários hosts Linux.
Um exemplo da maneira como me encontro trabalhando:
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.
Conforme acima, há alguma maneira de ir do host8 ao fechamento do PuTTY de uma só vez? Às vezes, encontro-me com até 5 ou 10 hosts de profundidade. Sei que posso clicar no X para fechar a janela do PuTTY, mas gosto de ter certeza de que minhas conexões SSH sejam fechadas corretamente usando o comando exit. Também percebo que estou pedindo dicas sobre como aumentar a preguiça. Vou apenas escrever como “como posso ser mais eficiente”.
Comentários
- Não diretamente o que você está perguntando, mas que tal apenas pressionar
ctrl+d
várias vezes? - @UlrichDangel Nunca usei isso antes, mas também um maneira rápida de desligar as conexões rapidamente.
- Você está realmente aninhando sessões SSH de 5 a 10 níveis de profundidade? Você percebe que ‘ está criando um túnel complicado que salta todos os pacotes em sua sessão SSH por todos esses hosts? Você poderia resolver o problema simplesmente não aninhando as sessões ssh?
- @ jw013 Não, eu não sabia disso, mas faz sentido. Honestamente, 5 a 10 níveis era um exagero, mas eu estava tentando ilustrar minha pergunta de ” como sair do Putty de uma só vez. ”
Resposta
Tente usar a ssh
seqüência de escape de terminação de conexão.
Na ssh
sessão, digite ~.
(til ponto). Você não verá os caracteres ao digitá-los, mas a sessão será encerrada imediatamente.
$ ~. $ 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).
Comentários
Resposta
Basta pressionar Ctrl D e você será desconectado para manter ctrl pressionado e pressionar “d” até que a janela desapareça.
Comentários
- Infelizmente, isso não ‘ funciona universalmente. Qualquer sessão executando um editor ou outra ferramenta de tela inteira provavelmente ignorará
EOT
. E atébash
irá ignorá-lo no meio de uma linha de comando. Experimente você mesmo: digite uma única letra e tenteCtrl-D
. - O que Ctrl + D faz, quero dizer, existe com segurança ou apenas elimina o processo?
- Ele sai com segurança. É um atalho shell que é o mesmo que digitar ‘ exit ‘ e pressionar Enter.
- Na verdade, meu ( windows git bash & ubuntu bash) emitir um
logout
. - sim, acredito que a saída também chama logout como ssh conexões tendem a não ser sessões de login.
Resposta
Simplesmente feche o PuTTY. ( Alt + F4 por padrão IIRC.)
Resposta
Outra maneira é fazer function
para ssh
:
function ssh(){ /usr/bin/ssh $@ ; exit ; }
Infelizmente, também fechará a conexão e fará o logout do console depois que você terminar de trabalhar no sistema remoto.
Observe que você precisa fazer essa função em todos os seus servidores, caso contrário, este hack não funcionará . A propósito, você sempre pode colocar a função em ~ / .bashrc ou ~ / .whatever_shell_you_use_rc.
Parece um hack um pouco sujo em comparação com o jeito de outros.
Comentários
-
function
não é POSIX – basta remover a palavra-chave e você precisa citar$@
corretamente, ou seus argumentos serão passados após a divisão de palavras (ruim).
Resposta
Ou você pode usar exec
para substituir seu processo shell com ssh
ao pular para outro 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 níveis de profundidade não são bonitos, pois o tráfego passará por todos os outros servidores. Por isso, não recomendo apenas matar PuTTY ou ssh (~.), Pois (dependendo do que você fizer) isso pode resultar em processos órfãos nos servidores.
Melhor tentar e ser menos ” preguiçoso “. Clique com o botão direito do mouse na barra de título do puttys para abrir uma nova sessão rapidamente. Se você tiver um servidor” padrão “e aceitar um salto a partir dele, o recurso” Duplicar sessão “é muito útil. Especialmente ao usar a autenticação pubkey.
Resposta
Se você não se importar em fazer alguns scripts, pode fazer isso.
Script: myssh .sh
#!/bin/bash ssh $1 if [ $? -eq 5 ]; then exit 5 fi
Chame por meio do comando ponto:
$ . myssh [email protected]
Se desejar sair de um nível:
$ exit
Se você quiser sair de todos:
$ exit 5
Comentários
- Claro, você teria que copiá-lo para todos os computadores de onde pudesse usar o ssh. Além disso, não seria ‘ mais fácil apenas definir uma função shell chamada ssh? Isso evitaria o período anterior, etc.
Resposta
Digitar logout na janela do terminal do putty faz isso eu:
richard@forevermore:~ > logout
Fecha a conexão ssh e fecha o aplicativo Putty.
Comentários
- Acredito que você não ‘ não leu a pergunta corretamente. OP faz
ssh host1
e, em seguida, dehost1
,ssh host8
. Nesse ponto, umlogout
faria a mesma coisa que oexit
comando que eles já conhecem – saia dehost8
e colocá-los de volta emhost1
. - Ok, entendo, meu mal.
~.
em um alias ou função? Apenas para dar a ele um nome fácil de lembrar, comoexitall
. Agora, ‘ estou perguntando por demais :). Tentei algumas coisas em~/.bashrc
, mas obtenha-bash: ~.: command not found
. Suponho que o bash vê isso como uma string e não uma sequência de escape vinda diretamente do teclado.ctrl+d
também, mas isso responde minha pergunta mais diretamente. Obrigado a todos.~.
, ele ‘ é controlado pelo própriossh
.ssh
precisa dessa técnica porque é ‘ CLI. PuTTY é um aplicativo GUI e há maneiras muito mais amigáveis de fazer isso em uma GUI.