我创建了一个用户并将其 shell 设置为/usr/sbin/nologin
。正如预期的那样,PuTTY 连接在连接后立即关闭。当尝试让 WinSCP 使用 SFTP 协议连接时,它说连接被拒绝并询问 SFTP 服务器是否正在运行。使用 SCP 协议不出所料也不起作用。
我安装了 RSSH 并将用户的 shell 设置为/usr/bin/rssh
,得到了完全相同的结果。PuTTY 立即断开了连接,SFTP 询问 SFTP 服务器是否正在运行,而 SCP 不起作用。
我将用户的 shell 设置为,/bin/bash
并且 SFTP 和 SCP 都运行良好,就像我的主用户一样。
我做错了什么?如何设置用户,使其可以从服务器下载文件,但没有 shell 访问权限?
谢谢。
答案1
ForceCommand
Forces the execution of the command specified by ForceCommand,
ignoring any command supplied by the client and ~/.ssh/rc if
present. ... Specifying a command
of “internal-sftp” will force the use of an in-process sftp
server that requires no support files when used with
ChrootDirectory.
因此,编辑你的/etc/ssh/sshd_config
并添加如下内容:
Match User username
ForceCommand internal-sftp
使用Match
时只影响需要的用户/组。
完整描述如下ForceCommand
:
... The command is invoked by using the user's login shell
with the -c option. This applies to shell, command, or subsystem
execution.
但是,正如internal-sftp
在进程中一样,即使/usr/bin/nologin
或被/bin/false
用作登录 shell,这也将起作用。