又一次“ssh 代理转发不起作用”

又一次“ssh 代理转发不起作用”

我可以使用加载到 ssh-agent 中的密钥从hostAhostB和从 到hostA进行sshhostC操作,没有任何问题。但是,如果我ssh -A hostB从执行hostA,然后尝试ssh hostChostB,公钥身份验证不起作用,它会要求我输入密码。

一些细节:

  • 我正在使用ssh-agentOpenSSH 自带的程序,而不是 GNOME Keyring 或类似的东西。
  • ssh -v hostB来自hostAssh -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
  • 所有三个系统均运行带有 OpenSSH 6.6.1p1 的 Ubuntu 15.10(Wily)。
  • 当我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会记录以下内容:hostAhostC

    debug1: client_input_channel_open: ctype [email protected] 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 [email protected]
    
  • 我的~/.ssh/config所有系统都包含以下不常见的设置(以及一些我认为不相关的常见设置):

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

有任何想法吗?

答案1

事实证明,罪魁祸首是我的以下一行~/.ssh/config

IdentitiesOnly yes

不久前,我在试验大量导致“尝试次数过多”被拒绝的密钥时添加了该功能。试验结束后,我忘记了它,因此从未将其删除。(在我开始使用代理转发之前,它从未引起任何问题。)

答案2

我很高兴看到你能自行解决这个问题。

您的问题与我遇到的问题不同,但我会添加我遇到的问题,以防有人碰到与我遇到的问题相同的帖子。

就我的情况而言,问题在于我的主目录的权限为 775,而 ssh 不允许这样做。不仅 .ssh/ 目录需要为 700,authorized_keys 需要为 600,而且主目录本身也必须为 755 或更低(例如 700)。

相关内容