我想在我的服务器上配置 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-sftp
root 用户,这会强制 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