Sair da conexão SSH com o usuário ligado em uma única etapa

0

Estou apenas curioso sobre isso. Às vezes eu SSH como ssh [email protected] e, em seguida, eu corro sudo -i para entrar como root user.

Agora quero desconectar e voltar ao host de origem. Eu costumo digitar o atalho exit ou Ctrl + D duas vezes para voltar.

Estou curioso para saber se é possível fazer isso em uma etapa, independentemente de quantas vezes você usou sudo dentro da conexão remota?

    
por VarunAgw 07.07.2018 / 20:43

3 respostas

2

Você precisa saber rlogin .

O SSH tem a semântica dos antigos programas rlogin e rsh do BSD. O manual do OpenSSH não documenta essas semânticas, assim como elas foram documentadas nos antigos manuais rlogin e rsh dos Unices comerciais. Uma parte dessas semânticas são as seqüências de escape que existem em uma sessão rlogin interativa.

As seqüências de escape começam com um caractere de escape , seguido por outro caractere que determina a sequência real. Eles são executados pelo cliente local e final da conexão SSH. Para que o caractere de escape possa ser usado de forma transparente pela extremidade remota na maioria das ocasiões, eles são somente reconhecidos imediatamente após a entrada de uma nova linha. Além disso, um caractere de escape duplicado é uma seqüência de escape que mapeia o envio de um único caractere de escape para o final remoto, de modo que ainda é possível enviar um caractere de escape imediatamente após uma nova linha, se necessário. (Esta é uma instância do comum Blast! Eu pensei que tinha pressionado esse botão. Pressione-o novamente. semântica da interface do usuário. ☺)

A seqüência de escape de particular importância para você é o caractere de escape seguido por . , um ponto final. Isso desconecta a conexão SSH do terminal local.

Uma importante omissão do manual do OpenSSH, encontrada no antigo rlogin doco, é que, se alguém tem uma cadeia de conexões, pode-se usar o mecanismo de duplicação para garantir que a sequência de escape seja processada por qualquer cliente SSH sucessivo na cadeia necessária.

Então, por exemplo, no host A, se alguém usou o SSH para efetuar login no host B e, a partir daí, usou o SSH para efetuar login no host C, pode-se executar uma desconexão local na conexão B → C, deixando o A → conexão B intacta, digitando (imediatamente após uma nova linha) o caractere de escape duas vezes e depois . . A conexão A → B decodifica isso como um único caractere de escape a ser enviado seguido por . , que a conexão B → C, por sua vez, vê como uma seqüência de escape comandando uma desconexão iniciada localmente. Isso pode ser estendido da maneira lógica óbvia.

O caractere de escape em si é, por padrão, um til, ~ , embora isso possa ser alterado de duas maneiras, como diz o doco. Observe que, para digitar isso em layouts de teclado com chaves inativas, é necessário seguir a tecla ~ (que pode ser um acorde que requer teclas modificadoras, dependendo do layout do teclado) pela barra de espaço. para que o cliente SSH local veja o caractere til em sua entrada interativa do terminal em primeiro lugar. Então digitar a seqüência de escape de desconexão (depois de uma nova linha) seria ~ . , e uma desconexão local para um salto seria similarmente < kbd> ~ ~ . .

Leitura adicional

  • "Sequências de escape" . %código%. Manual do usuário . HP-UX 11i Versão 2. Hewlett-Packard. Agosto de 2003.
  • "Abortando uma conexão rlogin " . Guia do Usuário do Solaris Advanced . 806-7612-11. Sun Microsystems. 2002.
  • Daniel Barrett, Richard Silverman e Robert Byrnes (2005). "Uso avançado do cliente: Escapando". SSH, The Secure Shell: O Guia Definitivo . ISBN 9780596008956. O'Reilly Media. pp 299-302.
por 09.07.2018 / 08:31
5

Você deve conseguir fazer isso usando a combinação de teclas ~ + . . Isso deve sair completamente da sessão ssh, não importa quantas sessões de usuário diferentes você tenha dentro dela.

Se você usar jumphosts e / ou servidores de terminal para acessar seu servidor, precisará adicionar ~ à sequência. Portanto, se você conectar o SSH em um jumphost antes de entrar no seu servidor, a sequência para desconectar do seu servidor será ~ + ~ + . . Telnet estilo antigo e conexões seriais também têm essa opção de escape. Com ssh -e @ [email protected] , o caractere de escape é alterado de ~ (o padrão) para @ para essa conexão.

    
por 07.07.2018 / 20:50
0

A resposta é provavelmente não.

A saída das duas sessões de uma só vez provavelmente quebrará algumas suposições ou práticas recomendadas em algum momento. Por exemplo, o shell bash tem alguma provisão para avisá-lo se você tiver algumas tarefas em segundo plano. Além disso, o histórico do shell pode ser perdido.

A dica da chave de escape mencionada por Jesse_b é legal, mas tem o drawbak acima

Se você sabe de antemão que você não quer pressionar Ctrl-D duas vezes, você poderia invocar:

 exec sudo -i

Mas ainda há algumas desvantagens mencionadas acima.

Ctrl-D duas vezes definitivamente a única prática recomendada em que consigo pensar

    
por 09.07.2018 / 20:26

Tags