使 linux 服务器允许 rsync/scp/sftp 但不允许终端登录

Eld*_*mir 15 linux ssh rsync login

我想配置一个 linux 机器(可能是一个 Ubuntu 服务器),以便我可以设置用户,以便可以通过 rsync/scp/sftp 上传/下载文件,但不应该 ssh 到机器并获得一个交互式终端。

这可能吗?我将如何配置它?我知道我需要打开 ssh 服务器才能使 rsync/scp/sftp 工作,但我想应该有一种方法可以防止直接登录。

Sli*_*ban 6

将用户的 shell 设置为rssh。从联机帮助页:

rssh - 只允许 scp 和/或 sftp 的受限安全外壳

  • 只是提醒您注意这个(旧的!)答案,rssh 现在显然已被放弃,并且正在从发行版中删除。我建议在注释中编辑这不再是一个好的解决方案 - 或者当然进行更广泛的更新以提供当前的解决方案(不幸的是,我没有推荐的解决方案)。 (3认同)
  • 也许是 GNU Rush?https://puszcza.gnu.org.ua/software/rush/ (2认同)

use*_*437 5

如果您只需要允许 rsync,rsync 的开发人员会提供rrsync脚本来解决您的问题。它可以从这里获得:http : //ftp.samba.org/pub/unpacked/rsync/support/rrsync

你只需要在你的.authorized_keys文件中添加这样的东西。此示例允许只读 ( -ro) 访问/some/directory/

command="/path/to/rrsync -ro /some/directory/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...
Run Code Online (Sandbox Code Playgroud)

此处提供了更全面的解释和示例:https : //www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/

更新:在修复此错误之前,这对于写访问来说并不安全:https : //bugzilla.samba.org/show_bug.cgi?id=11879

只要此错误仍然存​​在,请仅在只读模式 (-ro) 下使用 rrsync。