compartilhar sessão / chave ssh com usuário remoto

5

Assuma a seguinte configuração:

  1. O usuário bob está trabalhando localmente em sua estação de trabalho foo .
  2. O usuário alice está trabalhando localmente em sua estação de trabalho bar .
  3. O usuário bob tem acesso ssh ao servidor baz:22 por meio de uma chave armazenada em bob@foo:.ssh/id_rsa .
  4. O usuário alice tem acesso ssh à estação de trabalho bob foo:22 , mas não ao servidor baz .

Existe uma maneira para bob para ssh para baz compartilhar sua sessão (via encaminhamento de porta?) ou chave (via ssh-agent encaminhamento?) como alice pode acessar baz de bar via foo (assumindo a identidade de bob em foo ) ?

Adendo:

Há alguns mor que eu deveria ter esclarecido:

  1. bob não quer que alice conheça sua senha
  2. bob não quer que alice consiga executar rm -rf /home/bob em foo (em baz , no entanto, isso seria bom, obviamente).

Como sugerido por @ mukesh-sai-kumar , um poderia ter alice login para foo (como bob ?) e ssh com a chave compartilhada a partir daí.

A melhor abordagem que posso ver até agora seria criar um novo par de chaves para alice on bar , permitir a chave pública em foo e executar automaticamente a ssh bob@baz por meio da opção command="ssh [...]" no arquivo authorized_keys .

Isso permitiria configurar ssh baz on bar para realmente ssh bob@foo usando o novo par de chaves via alice@bar:.ssh/config com o encaminhamento de bob@foo logins usando essa chave específica para bob@baz via bob@foo:.ssh/authorized_keys (autorizando a chave de alice , mas restringindo command à chamada ssh baz ).

Dessa forma, as duas novas restrições seriam atendidas e alice nem veria nada, como mostra essa sessão interativa hipotética:

[alice@foo:~] (1) $ hostname
foo    
[alice@foo:~] (2) $ whoami
alice
[alice@foo:~] (3) $ ssh baz
[bob@baz:~] (1) $ hostname
baz    
[bob@baz:~] (2) $ whoami
bob
[bob@baz:~] (3) $ exit
[alice@foo:~] (4) $ hostname
foo    
[alice@foo:~] (5) $ whoami
alice
[alice@foo:~] (6) $

O único problema restante é que a chave ssh de bob em foo precisa ser compartilhada com a sessão bob iniciada pelo ssh de alice (via ssh-agent ?) .

    
por mschilli 15.01.2018 / 10:28

2 respostas

2

Alice pode dar a Bob sua chave pública, e Bob pode adicionar uma linha ao seu próprio arquivo .ssh/authorized_keys que permitirá que Alice inicie uma sessão ssh (como Bob) na estação de trabalho de Bob foo . Usando a opção command= , Bob pode restringir a chave de Alice para não conceder um shell interativo, mas uma conexão ssh aninhada a baz como Bob e usando uma chave acessada localmente para Bob em bar .

command="ssh -I .ssh/id_rsa bob@baz:22" ssh-rsa AAA...== alice@whatever

Opcionalmente, você pode incluir outras opções de restrição ( no-port-forwarding , from= , etc. - consulte a seção da página sshd man em AUTHORIZED_KEYS FILE FORMAT).

Quando Alice executar ssh bob@bar e autenticar com sua chave privada, ela será conectada por meio de bar a uma sessão ssh em baz , sem ter nenhum controle sobre a sessão intermediária na estação de trabalho de Bob.

Observe que, do ponto de vista de baz (log, auditoria de segurança), não há distinção entre essa conexão em túnel iniciada por Alice e uma conexão "normal" por Bob de sua própria estação de trabalho. Isso pode ser o que você pediu, mas não o que você quer.

Para tornar a chave protegida disponível para Alice em sua sessão, você pode definir explicitamente a variável de ambiente SSH_AUTH_SOCK como o caminho que Bob usa para sua sessão (altere a entrada authorized_keys para command="SSH_AUTH_SOCK=/path/to/bobs/agent_socket ssh bob@baz:22" ssh-rsa AAA... ). para atualizar o caminho quando ele é alterado (logoff / login normalmente), Bob pode executar um agente dedicado em nome de Alice com um caminho explícito especificado ( ssh-agent -a ~/.ssh/agent_for_alice e adicionar somente a chave específica com SSH_AUTH_SOCK=~/.ssh/agent_for_alice ssh-add ~/.ssh/id_rsa e inserindo a frase secreta.

    
por 17.01.2018 / 14:02
1

Solução: sessão SSH aninhada.

alice pode logar na estação de trabalho de bob (foo: 22) via SSH com a identidade de bob, e então entrar no baz via SSH com a identidade de bob (e a chave dele, pois ambas estão acessíveis a alice).

Uma representação baseada em comandos disso:

alice@bar:~$ ssh bob@foo
bob@foo's password:
---snip----
bob@foo:~$ ssh -i /home/bob/.ssh/id_rsa (your-user)@baz
----RSA ID based authentication----
your-user@baz:~$

Representação diagramática:

alice@bar -> Log into foo as user bob -> use bob's stored key to log into baz -> Achieved!
    
por 15.01.2018 / 14:58