Я могу ssh из hostA в hostB и из hostA в hostC используя ключи, загруженные в ssh-agent, без каких-либо проблем. Однако, если я выполняю ssh -A hostB с hostA , то пробую ssh hostC с hostB , аутентификация с открытым ключом не работает и запрашивает мой пароль.

Некоторые детали:

  • Я использую ssh-agent который поставляется с OpenSSH, а не GNOME Keyring или что-то подобное.
  • Как ssh -v hostB из hostA и ssh -v hostC из hostA показывают:

    debug1: Next authentication method: publickey
    debug1: Offering RSA public key: /home/rhansen/.ssh/id_rsa
    debug1: Server accepts key: pkalg ssh-rsa blen 279
    debug1: Authentication succeeded (publickey).
    
  • Я вижу свой ключ, когда запускаю ssh-add -L на hostB .

  • Мой ключ на hostA защищен паролем.
  • На hostB , /etc/ssh/sshd_config НЕ содержит AllowAgentForwarding no .
  • Все три системы работают под управлением Ubuntu 15.10 (Wily) с OpenSSH 6.6.1p1.
  • Когда я запускаю ssh -vvv hostC из hostB , регистрируется следующее:

    ...
    debug2: key: /home/rhansen/.ssh/id_rsa ((nil)),
    debug2: key: /home/rhansen/.ssh/id_dsa ((nil)),
    debug2: key: /home/rhansen/.ssh/id_ecdsa ((nil)),
    debug2: key: /home/rhansen/.ssh/id_ed25519 ((nil)),
    debug1: Authentications that can continue: publickey,password
    debug3: start over, passed a different list publickey,password
    debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
    debug3: authmethod_lookup publickey
    debug3: remaining preferred: keyboard-interactive,password
    debug3: authmethod_is_enabled publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: /home/rhansen/.ssh/id_rsa
    debug3: no such identity: /home/rhansen/.ssh/id_rsa: No such file or directory
    debug1: Trying private key: /home/rhansen/.ssh/id_dsa
    debug3: no such identity: /home/rhansen/.ssh/id_dsa: No such file or directory
    debug1: Trying private key: /home/rhansen/.ssh/id_ecdsa
    debug3: no such identity: /home/rhansen/.ssh/id_ecdsa: No such file or directory
    debug1: Trying private key: /home/rhansen/.ssh/id_ed25519
    debug3: no such identity: /home/rhansen/.ssh/id_ed25519: No such file or directory
    debug2: we did not send a packet, disable method
    debug3: authmethod_lookup password
    debug3: remaining preferred: ,password
    debug3: authmethod_is_enabled password
    debug1: Next authentication method: password
    
  • Если я выполняю ssh -vvv hostB с hostA , а затем выполняю ssh hostC , hostA регистрирует hostA перед запросом пароля hostC :

    debug1: client_input_channel_open: ctype auth-agent@openssh.com rchan 2 win 65536 max 16384
    debug2: fd 10 setting O_NONBLOCK
    debug3: fd 10 is O_NONBLOCK
    debug1: channel 2: new [authentication agent connection]
    debug1: confirm auth-agent@openssh.com
    
  • Мой ~/.ssh/config во всех системах содержит следующие необычные настройки (плюс некоторые общие, которые я не считаю актуальными):

    ControlMaster auto
    ProxyCommand sh ~/.ssh/proxy.sh '%h' '%p' '%r'
    IdentitiesOnly yes
    

Есть идеи?

2 ответа2

2

Оказывается, виновником была следующая строка в моем ~/.ssh/config:

IdentitiesOnly yes

Я добавил это некоторое время назад, когда я экспериментировал с большим количеством ключей, которые вызывали отклонения "слишком много попыток". Я забыл об этом, когда закончил экспериментировать, поэтому никогда не удалял его. (Это никогда не вызывало никаких проблем, пока я не начал использовать переадресацию агента.)

0

Я рад видеть, что вы смогли решить проблему самостоятельно.

Ваша проблема отличалась от той, что была у меня, но я добавлю ту, которая была у меня на тот случай, если кто-то натолкнется на эту запись с той, что у меня была.

В моем случае проблема заключалась в том, что мой домашний каталог имел разрешения 775, чего не позволяет ssh. Директория .ssh/ должна быть не только 700, а author_keys - 600, но и домашний каталог должен быть 755 или ниже (например, 700).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .