我在 x86 上使用 OpenIndiana 151a,我想使用带有公钥认证的 ssh 连接到其他远程服务器,但失败了。
远程服务器的 sshd (OpenSSH) 已启用 ssh-2 协议。我的 OpenIndiana 中已安装 ssh 客户端。我可以使用密码验证连接到远程主机。
但是,当我尝试使用公钥认证进行连接时,收到以下错误消息。
openindiana% ssh user@host
ssh_rsa_sign: RSA_sign failed:
error:8006B076:lib(128):PK11_GET_PRIV_RSA_KEY:C_CreateObject failed
user@host's password:
请注意,远程服务器的 sshd 已在使用公钥认证,我没有忘记将 id_rsa.pub 中的公钥字符串添加到远程服务器的 .ssh/authorized_keys。公钥认证在其他 OpenSSH 客户端中成功。
我认为这是 SunSSH 的问题。我发现这些问题仅出现在 OpenSolaris、OpenIndiana 和 Oracle Solaris 11 express 中。
有什么解决方案可以让我的 OpenIndiana 使用公钥认证吗?我不想换成 Linux 或 *BSD,因为我的办公室里还有一堆 Solaris 机器在运行。
希望这可以帮助:
openindiana% uname -a
SunOS s2 5.11 oi_151a i86pc i386 i86pc
openindiana% ssh -V
Sun_SSH_1.5, SSH protocols 1.5/2.0, OpenSSL 0x009080ff
openindiana%
答案1
根据我自己刚刚进行的一些测试,问题似乎出在密钥大小不是 2048 位的情况下。当我生成一个 2048 位(默认值)的新密钥时,一切都正常。
答案2
尝试传递-vvv
并ssh
阅读更详细的调试信息。