允许 scp 但不允许 ssh - 无需 scponly

允许 scp 但不允许 ssh - 无需 scponly

我正在将 Debian 服务器迁移到 Ubuntu 16.04。Debian 服务器上的一个软件包是,scponly它充当 shell,并允许 ssh 连接仅用于 scp 目的(不登录或运行scp二进制文件以外的任何内容)。详细信息可以找到这里。这个软件包在 Debian 上至少经历过 2 次物理服务器升级,无数次操作系统升级,大概可以追溯到 2007 年左右。

scponly不在任何 16.04 存储库中,并且未在启动板上编译。虽然我完全有能力从源代​​码安装它,但这让我想知道在过去 10 多年里是否有更好的方法来配置 ssh 以仅允许 scp 命令,这种方式对 Ubuntu 16.04 更友好,并且更少地基于遥远的过去。有什么想法吗?

答案1

根据这个服务器故障回答允许 SCP 但不允许使用 SSH 进行实际登录,目前支持的一种方式是使用rssh,可从universe存储库中获取:

sudo apt-add-repository universe

sudo apt-get install rssh

要允许 SCP,您必须取消注释文件中的相应行/etc/rssh.conf(以及您希望启用的任何其他协议):

allowscp
#allowsftp
#allowcvs
#allowrdist
#allowrsync
#allowsvnserve

然后只需将用户的登录 shell 更改为 rssh shell,例如

sudo chsh -s /usr/bin/rssh steeldriver

然后你可以测试 SCP 是否有效,例如

$ scp steeldriver@localhost:~/Pictures/somefile.png ./
steeldriver@localhost's password: 
somefile.png                                                               100%   34KB  33.7KB/s   00:00    
$

但 SSH 应该会失败并出现拒绝消息,例如

$ ssh steeldriver@localhost
steeldriver@localhost's password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-88-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul  6 16:23:47 2016 from localhost

This account is restricted by rssh.
Allowed commands: scp

If you believe this is in error, please contact your system administrator.

Connection to localhost closed.

请注意,似乎没有必要/usr/bin/rssh在 /etc/shells 中添加允许登录 shell 列表

相关内容