Como saber se o SSH entrou na máquina? [duplicado]

14

É possível dizer se um terminal é SSH em uma máquina? algum tipo de comando para fazer isso por mim e executar algo se eu sou SSHd?

    
por user82961 04.09.2014 / 00:23

3 respostas

21

Você pode verificar se as variáveis $SSH_CLIENT e $SSH_TTY estão definidas:

(through SSH) $ [[ -z $SSH_TTY ]]; echo $?
1
(local) $  [[ -z $SSH_TTY ]]; echo $?
0

A variável $SSH_CLIENT contém o IP do qual você está se conectando, junto com o controle remoto e a porta local:

(through SSH) $ echo $SSH_CLIENT
15.3.25.189 54188 22
    
por 04.09.2014 / 00:30
6

Tente pressionar Enter e depois pressionar ~? .

Se você estiver usando um cliente OpenSSH, deverá receber uma lista de seqüências de escape suportadas que executam funções diversas.

$ ~?
Supported escape sequences:
 ~.   - terminate connection (and any multiplexed sessions)
 ~B   - send a BREAK to the remote system
 ~C   - open a command line
 ~R   - request rekey
 ~V/v - decrease/increase verbosity (LogLevel)
 ~^Z  - suspend ssh
 ~#   - list forwarded connections
 ~&   - background ssh (when waiting for connections to terminate)
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

Isso validará o estado conectado na máquina local , em vez de verificar as variáveis de ambiente que estão definidas na máquina remota e, portanto, sujeitas à configuração remota.

    
por 04.09.2014 / 00:49
2

Existem as variáveis $SSH_CLIENT e $SSH_CONNECTION , mas se você usar um programa como screen , essas variáveis permanecerão definidas embora sejam obsoletas. Se isso for importante, você pode usar os meus escreen e sh.screen utilitários .

    
por 04.09.2014 / 00:44

Tags