进行此检查时:
$ /usr/sbin/sshd -t
Run Code Online (Sandbox Code Playgroud)
获得:
Could not load host key: /etc/ssh_host_rsa_key
Could not load host key: /etc/ssh_host_dsa_key
Run Code Online (Sandbox Code Playgroud)
但是当对sudo所有人做同样的检查时:
$ sudo /usr/sbin/sshd -t
$
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生这种情况,我的标准用户有什么问题以及如何解决?
有谁知道为什么会发生这种情况,我的标准用户有什么问题以及如何解决?
没有任何错误; 您正在尝试以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
Run Code Online (Sandbox Code Playgroud)
这是可以预料的,因为sshdSSH守护进程——注意d后面ssh——它将作为系统上的 SSH 服务器运行,侦听和等待远程 SSH 登录请求。所以它总是需要 root/sudo权限才能工作。
因此,这不是“错误”,而是尝试以sshd非特权用户身份运行系统守护程序时的预期行为。
也许你想跑ssh -t?正如该ssh -t选项的手册页所解释的那样:
强制伪 tty 分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个 -t 选项强制 tty 分配,即使 ssh 没有本地 tty。
这基本上允许您从当前终端远程运行命令,并在本地显示输出,就好像它在本地机器上运行一样。所以——正如这个页面所解释的——如果你想ls在远程机器上运行而不实际完全登录,你可以运行这个命令:
ssh -t [username]@[hostname] ls
Run Code Online (Sandbox Code Playgroud)
的输出ls将显示在您的屏幕上,并且ssh在该命令完成后连接将立即关闭。