我在 Linux 服务器上有很多 ssh 公钥登录,例如:
Jul 25 11:41:01 host sshd[24594]: Accepted publickey for root from xxx.xxx.xx.xx port 33374 ssh2
authorized_keys
这对我来说很奇怪,因为目录中没有文件/root/.ssh
。AuthorizedKeysFile
中的选项的/etc/ssh/sshd_config
默认值为.ssh/authorized_keys
。
我想知道如何使用公钥身份验证登录服务器?
答案1
我已经弄清楚发生了什么事。消息通过 UDP 从远程主机到达服务器。我一开始没有注意到主机字段发生变化,我的错误。
顺便说一句,实际上在那里是可以使用公钥身份验证登录,不authorized_keys
涉及文件。 RedHat(及其变体)有一个受支持的 OpenSSH 补丁,其中添加了AuthorizedKeysCommand
和AuthorizedKeysCommandRunAs
选项。该补丁已被合并到上游OpenSSH 6.2。引用自手册页:
授权密钥命令
指定用于查找用户公钥的程序。该程序将使用其第一个参数(被授权的用户名)进行调用,并应在标准输出 AuthorizedKeys 行上生成(请参阅 sshd(8) 中的 AUTHORIZED_KEYS)。默认情况下(或设置为空字符串时)不会运行 AuthorizedKeysCommand。如果 AuthorizedKeysCommand 未成功授权用户,则授权将传递给 AuthorizedKeysFile。请注意,此选项仅在 PubkeyAuthentication 打开时有效。
授权键命令运行方式
指定在其帐户下运行 AuthorizedKeysCommand 的用户。空字符串(默认值)表示使用被授权的用户。