我正试图通过智能卡技术在CentOS 7.5机器(192.168.1.5)上进行测试。
现在我可以使用主插槽的x509证书和匹配的私钥来实现这一点,但这意味着我必须将证书的公钥放到我想要SSH的每台机器上。如果你问我,这很乏味。
因此,我想使用不同的公共/私有,特别是RSA密钥,以便我可以在将来的某个时间使用RSA证书对其进行签名,从而允许OpenSSH信任RSA证书并防止需要信任每一个智能卡的x509证书。但是现在我只想用来自智能卡的这个RSA密钥对进行SSH。
因此,我开始按照典型步骤生成密钥并将其加载到智能卡上。
ssh-keygen -f gofish
ssh-keygen -f gofish.pub -e -m pem
ykman piv import-key 9c gofish
ykman piv generate-certificate 9c gofish.pem -s 'gofish543'
ssh-keygen -D [opensc-pkcs11.so] -e
- 将上述命令的输出放在我的目标CentOS机器上。
ssh gofish543@192.168.1.5 -I [opensc-pkcs11.so]
随着一切似乎工作,我转移到Windows 10与PuTTY SSH。一切都崩溃了。使用PuTTY-CAC进行智能卡SSH身份验证,它成功地将我的智能卡信息加载到选美中,但是当我转到ssh时,它会因错误而失败...
PuTTY终端提供以下内容......
Using username "gofish543".
Authenticating with public key "CAPI:5e084cb687f0c54adf8ddd733720db48407d3195" from agent
Server refused public-key signature despite accepting key!
gofish543@192.168.1.5's password:
使用sshd错误日志显示以下内容...
debug1: matching key found: file /home/gofish543/.ssh/authorized_keys, line 1 RSA SHA256:Eor3aPxtNW6zrxLbq+1tB/urwql1CQB6EM8tFIx31+I^M
debug1: restore_uid: 0/0^M
debug3: mm_answer_keyallowed: key 0x55d310674760 is allowed^M
debug3: mm_request_send entering: type 23^M
debug3: mm_key_verify entering [preauth]^M
debug3: mm_request_send entering: type 24 [preauth]^M
debug3: mm_key_verify: waiting for MONITOR_ANS_KEYVERIFY [preauth]^M
debug3: mm_request_receive_expect entering: type 25 [preauth]^M
debug3: mm_request_receive entering [preauth]^M
debug3: mm_request_receive entering^M
debug3: monitor_read: checking request 24^M
key_verify: invalid argument^M
debug3: mm_answer_keyverify: key 0x55d310674710 signature unverified^M
debug3: mm_request_send entering: type 25^M
Failed publickey for gofish543 from 192.168.1.3 port 50051 ssh2: RSA SHA256:Eor3aPxtNW6zrxLbq+1tB/urwql1CQB6EM8tFIx31+I^M
公共,私钥认证在线上分崩离析key_verify: invalid argument
。搜索此问题会产生零适用结果。我该怎么做才能解决这个问题?
作为旁注,如果我在错误日志中披露了我不应该拥有的任何内容,例如私钥或私钥信息,请知道所有这些机器都位于托管在互联网上的笔记本电脑上的内部网络上。这些密钥将在一两周内删除。