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

  • Muito legal! Qualquer maneira de colocar ~. em um alias ou função? Apenas para dar a ele um nome fácil de lembrar, como exitall. 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.
  • Eu gosto da solução ctrl+d também, mas isso responde minha pergunta mais diretamente. Obrigado a todos.
  • @Banjer bash nunca vê ~., ele ‘ é controlado pelo próprio ssh .
  • @Gilles entendeu, faz sentido.
  • E ‘ não há garantia ee que o PuTTY também faz isso. O cliente CLI ssh precisa dessa técnica porque é ‘ CLI. PuTTY é um aplicativo GUI e há maneiras muito mais amigáveis de fazer isso em uma GUI.

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 tente Ctrl-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, de host1, ssh host8. Nesse ponto, um logout faria a mesma coisa que o exit comando que eles já conhecem – saia de host8 e colocá-los de volta em host1.
  • Ok, entendo, meu mal.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *