Openssh - 允许同一服务器中的 root 访问 sftp 和 ssh

Openssh - 允许同一服务器中的 root 访问 sftp 和 ssh

我想在我的服务器上配置 sftp 以供 root 用户访问。

我将配置更改为/etc/ssh/sshd_config

PermitRootLogin yes
AuthorizedKeysFile  .ssh/authorized_keys
PermitEmptyPasswords yes
ChallengeResponseAuthentication no
Compression no
ClientAliveInterval 15
ClientAliveCountMax 4
#Other options are commented
[...]
Subsystem sftp /usr/libexec/sftp-server

Match user root
ChrootDirectory /
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

它可以正常工作,我可以通过 sftp 连接到我的服务器,但现在我再也无法通过 ssh 连接了。我收到以下消息:

This service allows sftp connections only.

同样的情况也发生在Match group root

我如何配置 sftp 以允许 root 但同时保留 ssh?


更新:

注释 ForceCommand 内部 sftp 选项 ssh 仍然有效,但我无法通过 sftp 连接。sshd_config:
Subsystem   sftp    /usr/libexec/sftp-server
Match user root
ChrootDirectory /
X11Forwarding no
AllowTcpForwarding no
#ForceCommand internal-sftp

错误:

user@notebook:~$ sftp root@my_device
Warning: the ECDSA host key for 'my_device' differs from the key for the IP address 'xx.xx.xx.xx'
Offending key for IP in /home/myUser/.ssh/known_hosts:78
Matching host key in /home/myUer/.ssh/known_hosts:93
Are you sure you want to continue connecting (yes/no)? yes
Connection closed.  
Connection closed

注意:如果我也删除它,Subsystem sftp /usr/libexec/sftp-server因为在尝试通过 sftp 连接时出现了不同的错误: subsystem request failed on channel 0

答案1

您使用了ForceCommand internal-sftproot 用户,这会强制 root 用户的每个连接都使用 sftp。删除此命令(或将其注释掉)- ssh 和 sftp 都应该可以正常用于 root 用户(当然,更改配置后不要忘记重新启动 sshd)。

答案2

好吧,这里的问题是/usr/libexec/sftp-server服务器端不存在。我使用新的 Yocto 构建将其添加到图像中,然后我能够使用默认配置通过 root 通过 ssh 和 sftp 进行连接:

# override default of no subsystems
Subsystem   sftp    /usr/libexec/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#   X11Forwarding no
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs server

相关内容