设置用户无需 shell 访问权限即可下载文件

设置用户无需 shell 访问权限即可下载文件

我创建了一个用户并将其 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

man sshd_config

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,这也将起作用。

相关内容