Obtém o nome de usuário do usuário que iniciou a conexão SSH?

2

Como descubro o nome de usuário do usuário que iniciou uma conexão ssh?

Digamos que eu ssh de userA @ machine1 para userB @ machine2. Agora que estou na máquina2, como descubro o nome de usuário userA? Eu tenho acesso (mas nem sempre acesso root) a ambas as máquinas. O ideal seria que isso não exigisse nenhuma configuração especial na máquina1, mas, se isso não for possível, estou aberto a qualquer solução.

    
por Alex Grin 20.11.2010 / 02:35

4 respostas

4

Assumindo o Linux em ambos os lados:

  • Execute netstat -nt na máquina2 e procure a conexão da máquina1. Será algo parecido com isto:

    tcp 0 48 10.243.18.22:22 10.48.209.120:54875 ESTABLISHED 
    

    A primeira porta ip: é o endereço e a porta da máquina local (ou seja, a máquina2) e a segunda é o endereço e a porta da máquina remota (neste exemplo, máquina1).

  • Faça o login na máquina1. Execute (como root) netstat -tpn | grep 54875 (onde 54875 é a porta que você encontrou na etapa anterior). Isso mostrará o PID do processo ssh de origem, a partir do qual você pode determinar o usuário trivialmente usando o comando ps .

Você pode evitar muito desse trabalho se estiver executando um daemon ident no sistema de origem, mas (a) poucas pessoas fazem isso, porque expõe informações sobre seus usuários e (b) é bom saber como fazer isso.

    
por 20.11.2010 / 02:43
3

Você precisa saber ou deseja saber? Quero dizer que, em um sentido técnico, porque sem acesso root na máquina remota ("machine1" na sua configuração), não há como saber com autoridade. No entanto, você pode ser capaz de fazer suposições razoáveis. Isso ajuda se for informativo, mas não é bom para a segurança.

O daemon ident era a maneira antiga de executar isso, mas como no mundo atual não faz sentido apenas distribuir informações do usuário gratuitamente para sites não confiáveis, as implementações de identificação modernas normalmente fornecem um resultado criptografado. Isso pode ser descriptografado usando um segredo mantido no próprio sistema. Mas com mais frequência agora, as pessoas simplesmente não executam um daemon ident.

Se você tem root em machine1, você pode executar o identd com criptografia e usar o segredo em machine2 para encontrar sua resposta. Ou você pode fazer o netstat stuff larsks sugere. Mas se você não tem raiz, você pode olhar para processos não-como-raiz e fazer suposições educadas com base no tempo.

Como alternativa, você pode abordar a questão de um ângulo diferente. Se a garantia de identidade é sua preocupação, algum tipo de solução OTP criptográfica baseada em tempo ou contador pode torná-lo razoavelmente seguro de que os usuários remotos conectados são aqueles que deveriam ser, não importando o que eles conectam. / p>     

por 20.11.2010 / 03:18
1

Isso é tratado por um daemon ident em execução na auth port (authd, oidentd, pidentd, etc. ).

    
por 20.11.2010 / 02:38
0

Você não poderia simplesmente executar o ps -aux na máquina2?

Eu SSH na Machine2 da Machine1 e aqui está a saída. Eu até fiz um su para root e posso ver o UID original com o qual me conectei.

raiz 31519 0,1 0,1 6512 1940? Ss 10:56 0:00 sshd: eric [priv]

eric 31521 0,0 0,1 6512 1224? S 10:56 0:00 sshd: eric @ pts / 0

    
por 20.11.2010 / 16:59

Tags