Como obter uma conta root do Ubuntu para encaminhar chaves ssh como a máquina de encaminhamento

1

UPDATE: a coisa toda descrita abaixo funciona bem para contas não-raiz na máquina remota.

Ou seja, isso funciona:

anderson@client -> nonroot@remote -> anderson'[email protected]

Isso não funciona, no entanto:

anderson@client -> root@remote -> anderson'[email protected]

Então, a questão é, na verdade, como fazer o trabalho de encaminhamento do agente ssh quando a máquina no meio é raiz?

A máquina local (OSX) tem o encaminhamento ativado no arquivo ~ / .ssh / config:

Host remotehost
    ForwardAgent yes

A máquina local não substitui esta configuração em / etc / ssh / ssh_config.

Host *
#   ForwardAgent no

A máquina local está executando o ssh-agent:

anderson$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-L0iFZ891Gv/agent.75083; export SSH_AUTH_SOCK;
SSH_AGENT_PID=75084; export SSH_AGENT_PID;
echo Agent pid 75084;

ssh-add foi executado na chave:

anderson$ ssh-add -K ~/.ssh/id_rsa
Passphrase updated in keychain: /Users/anderson/.ssh/id_rsa
Identity added: /Users/anderson/.ssh/id_rsa (/Users/anderson/.ssh/id_rsa)

$ SSH_AUTH_SOCK está lá:

anderson$ echo $SSH_AUTH_SOCK
/tmp/launch-pg2gVc/Listeners
A chave do

ssh foi enviada para o GitHub e está funcionando:

anderson$ ssh -T [email protected]
Hi [elided]! You've successfully authenticated, but GitHub does not provide shell access.

A máquina remota (Ubuntu 12.04LTS) tem a chave pública ssh da máquina local e funciona:

anderson$ ssh root@remotehost
[root@host1~]#

A máquina remota tem o AllowAgentForwarding configurado:

[root@host1~]# head /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details

AllowAgentForwarding yes

E aqui é onde fica a forma de pêra: o SSH_AUTH_SOCK não está em nenhum lugar no controle remoto:

[root@host1~]# echo $SSH_AUTH_SOCK

**crickets**

E, é claro, o encaminhamento de chaves também não foi encontrado:

[root@host1~]# ssh -T [email protected]
Permission denied (publickey).

Mesmo forçar isso assim não funciona:

anderson$ ssh -A root@remotehost

Saída de depuração:

anderson$ ssh -vvv -A root@remotehost
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/anderson/.ssh/config
debug1: Applying options for remotehost
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_request_forwards: requesting forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 45287
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 3

Então, estou sentindo falta de algo? Parece-me que cobri todas as bases para a depuração. Alguma idéia do que mais posso verificar?

    
por Scott A 01.03.2013 / 00:44

1 resposta

0

Eu tive casos semelhantes, e o motivo foi que o wrapper que eu estava usando estava definindo a opção ControlPath , e o SSH também estava preso em debug1: mux_client_request_session: master session id: 3 . Remover um diretório especificado em ControlPath resolveu o problema.

    
por 02.02.2014 / 20:19