Como faço para sair de uma conexão SSH?

192

Estou conectando a um servidor via SSH para enviar uma mensagem para um servidor de soquete usando um comando como:

ssh 181.169.1.2 -p 5566

Depois que a conexão é estabelecida e eu escrevo a mensagem e a envio, não consigo sair do modo de texto. Só tenho permissão para inserir mais texto e é isso.

Existe um comando ou uma combinação de teclas que me permita retornar ao modo de comando?

    
por Andreea 28.08.2012 / 16:29

8 respostas

77

How do I exit an SSH connection?

Duas maneiras:

  • fechando a sessão do shell, por exemplo com exit seguido por Enter , ou Ctrl - d geralmente permite que você saia da sessão ssh normalmente,
  • no caso de você ter uma conexão incorreta e o shell não responder, pressione a tecla Enter e digite ~. . O ssh deve ser fechado imediatamente e retornar ao prompt de comando.

A primeira opção deve ser intuitiva, mas como sabemos a última opção?

Poderíamos aprender essas informações a partir de uma leitura cuidadosa da página do manual.

$ man ssh

nos fornece a documentação do SSH , que tem a seguinte seção sobre caracteres de escape:

ESCAPE CHARACTERS
     When a pseudo-terminal has been requested, ssh supports a number of
     functions through the use of an escape character.

     A single tilde character can be sent as ~~ or by following the tilde by
     a character other than those described below.  The escape character
     must always follow a newline to be interpreted as special.  The escape
     character can be changed in configuration files using the EscapeChar
     configuration directive or on the command line by the -e option.

     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 if the peer sup‐
             ports 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 port-forwardings with
             -KL[bind_address:]port for local, -KR[bind_address:]port for
             remote and -KD[bind_address:]port for dynamic port-forwardings.
             !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 if the peer
             supports it).

     ~V      Decrease the verbosity (LogLevel) when errors are being written
             to stderr.

     ~v      Increase the verbosity (LogLevel) when errors are being written
             to stderr.
    
por 16.09.2017 / 23:57
258

Resposta curta: digite exit

Se isso não funcionar, no entanto ...

Caractere de escape SSH e sequência de desconexão

A maioria das implementações de SSH implementa um caractere de escape para sessões interativas, semelhante à combinação Ctrl-] do telnet. O caractere de escape padrão do SSH é ~ , inserido no início de uma linha.

Se você quiser encerrar uma sessão OpenSSH interativa que está presa e não pode ser encerrada digitando exit ou Ctrl D em um shell no remoto lado , você pode inserir ~ seguido por um ponto . . Para ter certeza de inserir o caractere de escape no início de uma linha de entrada, você deve pressionar Enter primeiro. Portanto, a sequência a seguir terminará, na maioria dos casos, uma sessão SSH:

Digite ~ .

Outras seqüências de escape

O

OpenSSH, por exemplo, oferece outras seqüências de escape além de ~. . Inserir ~? durante uma sessão deve fornecer uma lista. Alguns exemplos:

  • ~ seguido Ctrl-Z suspende a sessão,
  • ~& coloca diretamente no plano de fundo,
  • ~# fornece uma lista de conexões encaminhadas nesta sessão.
  • Se você quiser simplesmente digitar um til no início de uma linha, será necessário duplicá-lo: ~~ .

O caractere de escape pode ser alterado usando a opção de linha de comando -e . Se você definir o valor especial -e none , o escape será desativado e a sessão será totalmente transparente.

Veja também a página man do OpenBSD em ssh (que é referenciado de www.openssh.org ) sob a opção de linha de comando -e

    
por 17.07.2013 / 11:26
33

Você quer sair do shell SSH?

Você pode digitar exit e teclar Enter , ou usar Ctrl + D

    
por 28.08.2012 / 20:37
11

Apenas digite exit ou logout (depois pressione Enter, é claro) ambos funcionarão.

    
por 14.04.2014 / 17:00
4

Você pode escrever logout na linha do console (e pressionar Enter , é claro).

    
por 17.07.2013 / 09:12
4

Estes são os caracteres suportados que fornecem várias opções com as quais você pode brincar com o ssh.

Sequências de escape suportadas:

 ~.  - terminate session

 ~B  - send a BREAK to the remote system

 ~R  - Request rekey (SSH protocol 2 only)

 ~#  - list forwarded connections

 ~?  - this message

 ~~  - send the escape character by typing it twice

(Observe que as fugas são reconhecidas apenas imediatamente após uma nova linha). Você pode fechar a lista de seqüências de escape pressionando Enter .

    
por 15.06.2016 / 00:26
4

Eu vejo que a pergunta está adequadamente respondida, mas eu gostaria de acrescentar que vejo que você está se conectando a este servidor via ssh na porta 5566. Eu li uma vez em este site que se comunica via SSH em portas não privilegiadas (sendo tudo acima de 1023 ) não é seguro.

When you are logged onto a system as a non-root user (anyone not being uid 0), you cannot create a listing TCP or UDP port below 1024. This is because port numbers below 1024 are so-called privileged ports and can only be opened by root or processes that are running as root. So for instance, when your webserver (apache, nginx etc) will start, it will do so as the privileged root user in order to open up a listening connection to port 80 (the port that by default will be used for HTTP traffic). Now, as soon as the port is opened and everything that needs to be done as root is done, the webserver will fall back to a non-privileged user (either the www-data, apache, or nobody user). From that point, when something bad is happening, it is only limited to the rights that that user has. Now, back to SSH: when we start SSH on port 22, we know for a fact that this is done by root or a root-process since no other user could possibly open that port. But what happens when we move SSH to port 2222? This port can be opened without a privileged account, which means I can write a simple script that listens to port 2222 and mimics SSH in order to capture your passwords.

Então, quando eu mudo a porta eu sempre uso uma porta abaixo de 1024 que não é usada por outro software padrão. Existe uma boa lista em Wikipedia para isso.

O autor do artigo também acredita que a alteração da porta SSH não deve ser feita por motivos de compatibilidade.

Another issue: many corporations have incoming and outgoing firewalls, meaning you cannot go to any site to any random port and expect it to work. Some secure ports, like port 22 are often exempt from that, while other ports like port 25 or 110 are blocked.

Pessoalmente, penso que existem casos de utilização em que é útil. Por exemplo, quando você ou um pequeno grupo de pessoas é o único que se conecta ao servidor via SSH, você registra ataques automatizados de força bruta e deseja manter o log limpo.

    
por 19.07.2016 / 08:59
2

MacOS : quando o ssh trava usa a seguinte sequência:

ENTER 
SHIFT+'
.

em que: shift + ' produz ~ (caractere de til)

    
por 29.03.2018 / 19:25