我是说:
如果 sshd 不是在 root 帐户中运行,那么它如何让远程 ssh 客户端在 root 帐户中运行 shell 或其他命令?
如果sshd调用login命令,则用户可以以root身份登录。因为用户提供了 root 密码,并且 UNIX 知道它。
但 sshd 也有无密码功能。也就是说它存储了 ssh 客户端的公钥。在这种情况下,ssh 客户端不会输入登录命令的密码。 UNIX系统如何让ssh客户端以ROOT用户身份运行shell?如果 sshd 不是 root 帐户。
原来的:
我的问题是 sshd 可以用来登录服务器而无需密码。
那么,需要以 root 权限运行吗?
如果不是,服务器如何允许客户端以 root 帐户运行?
答案1
之前有人问过服务器故障。稍加修改和注释的引用:
从您创建的新文件的
/usr/sbin/sshd -f ~/.ssh/sshd_config
位置开始该过程。~/.ssh/sshd_config
在其他选项(例如不同的主机密钥、不同的端口等)中,您需要添加行UsePrivilegeSeparation no
.这将阻止sshd
进程尝试执行任何setuid
或setgid
调用,并允许其继续以您的用户身份运行并以您的用户身份接受连接。
另外不要忘记使用非特权端口(>1024)。
答案2
我相信您需要的是ssh-keygen
,它会记住您的“设备签名”。因此,即使您更改了密码,只要您ssh
使用同一设备,它仍然有效。
这里是如何设置的详细教程。
是否需要以root权限运行?
- 不需要,您在设置时只需要主机服务器上的 root 权限,即可编辑 .home 目录下的某些文件
root
。设置完成后,您无需再输入root密码即可完成此操作。