此主题是对标题问题的回复:为什么ssh-agent不转发我的SSH证书? 实际上我在搜索过程中找不到任何信息。我必须read the C code of ssh-add 解决我的问题..
我收到了有效的SSH证书:
$ ssh-keygen -L -f ~/.ssh/id_rsa-cert.pub
/home/user/.ssh/id_rsa-cert.pub:
Type: ssh-rsa-cert-v01@openssh.com user certificate
Public key: RSA-CERT SHA256:YgFzKPkUdZHLLi8bEKUs5/hLumNoMNG+oDJ+KD6mS3s
Signing CA: RSA SHA256:w+Cjpu/QQUunuojs9Af82ENdBUreCDXo+APao9X4dHw
Key ID: "user_key"
Serial: 0
Valid: from 2017-12-06T10:53:00 to 2017-12-07T10:54:57
Principals:
user
admin
Critical Options: (none)
Extensions:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rc
这是我的ssh-agent密钥列表:
$ ssh-add -l
4096 SHA256:YgFzKPkUdAGBPi8bEKUs5/hLumNoAds+oDJ+KD6mS3s user_key (RSA)
当我在远程服务器上SSH时,它可以工作。我没有~/.ssh/authorized_keys
,我的密钥可能已转发,因为我得到了相同的先前结果。
现在我想从第一个服务器(使用ForwardAgent yes
)SSH到另一个服务器:
$ ssh srv1
srv1:~$ ssh srv2 -vvv
...
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: user_key
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
...
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
srv1:~$
我做错了什么?
答案 0 :(得分:4)
事实上,ssh-agent并没有很好地利用我的SSH证书。我们可以看到它是RSA
而不是RSA-CERT
。
如何在ssh-agent中导入证书?
您必须拥有2对密钥(位置和命名很重要):
然后导入原来的一对:
$ ssh-add ~/.ssh/example_key
Enter passphrase for /home/user/.ssh/example_key:
Identity added: /home/user/.ssh/example_key (/home/user/.ssh/example_key)
Certificate added: /home/user/.ssh/example_key-cert.pub (user)
自动添加证书。
然后,SSH代理会毫无问题地转发它。同时,如果不删除SSH证书,则无法从代理中删除原始RSA密钥对。
$ ssh-add -l
4096 SHA256:YgFzKPkUdAGBPi8bEKUs5/hLumNoAds+oDJ+KD6mS3s user_key (RSA)
4096 SHA256:YgFzKPkUdAGBPi8bEKUs5/hLumNoAds+oDJ+KD6mS3s user_key (RSA-CERT)
$ ssh srv1
srv1:~$ ssh srv2
srv2:~$
~/.ssh/id_rsa_github
,我的SSH证书是~/.ssh/id_rsa-cert
。要小心:
permit-agent-forwarding
ForwardAgent yes
放入SSH客户端配置最后,为了签署证书我使用CASSH。