无法加载主机密钥:/etc/ssh_host_*_key

无法加载主机密钥:/etc/ssh_host_*_key

进行此项检查时:

$ /usr/sbin/sshd -t

获取:

Could not load host key: /etc/ssh_host_rsa_key
Could not load host key: /etc/ssh_host_dsa_key

但是当对所有进行相同检查时,结果sudo都是好的:

$ sudo /usr/sbin/sshd -t
$

有人知道为什么会发生这种情况,我的标准用户出了什么问题以及如何解决它?

答案1

有人知道为什么会发生这种情况,我的标准用户出了什么问题以及如何解决它?

没有任何问题;您正尝试sshd以非特权用户身份运行(SSH 守护程序)。

例如,我在 Mac OS X 10.9.5 (Mavericks) 上运行时收到完全相同的“错误” /usr/sbin/sshd -t

Could not load host key: /etc/ssh_host_rsa_key
Could not load host key: /etc/ssh_host_dsa_key

这是可以预料的,因为sshdSSH守护进程—注意d后面的ssh—它将作为系统上的 SSH 服务器运行,监听并等待远程 SSH 登录请求。因此它将总是需要 root/sudo权限才能工作。

因此,这不是“错误”,而是sshd以非特权用户身份尝试运行系统守护程序时的预期行为。

也许您正在尝试运行ssh -t?正如该选项的手册页ssh -t所解释的那样:

强制分配伪 tty。这可用于在远程计算机上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个 -t 选项强制分配 tty,即使 ssh 没有本地 tty。

这基本上允许您从当前终端远程运行命令,并将输出显示在本地,就像它在本地机器上运行一样。所以-正如本页所解释的那样—如果您想ls在远程机器上运行而又不完全登录,您可以运行以下命令:

ssh -t [username]@[hostname] ls

输出ls将显示在您的屏幕上,并且ssh该命令完成后连接将立即关闭。

答案2

您可以通过运行以下命令来创建缺少的密钥:

/usr/bin/ssh-keygen -A

也可以看看:https://bbs.archlinux.org/viewtopic.php?id=165382

相关内容