我正在将 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 列表