我想让我的“客户”有权管理服务器上的文件。我讨厌FTP,因为它不安全,而且我认为它已经过时了。 (我知道,我知道,SFTP使用的是SSH)。但是我只是想知道是否有可能?
所以我不必在服务器上安装FTP服务,一切都会很棒!
#1 楼
从4.9版本开始,OpenSSH(在centos 5.x中不可用,但ChrootDirectory功能已向后移植)具有internal-sftp
子系统: > Subsystem sftp internal-sftp
将您的用户添加到
sftponly
组。您必须将用户的主目录更改为/
,因为chroot和/home/user
应该属于root
。我还将/bin/false
设置为用户的shell。#2 楼
有一个外壳可以轻松地执行此操作。它也可以chroot。评论
如果您同时需要SFTP用户和SSH用户,这将非常有用。您只需将/ etc / passwd中的shell替换为仅限于SFTP的shell。
– Dragos
2012年2月23日在8:12
#3 楼
Checkout rssh是一个伪造的外壳,它允许sftp但拒绝ssh有关RSSH的更多信息
http://www.pizzashack.org/rssh/
RPM
http://pkgs.repoforge.org/rssh/
您可以配置rssh允许/拒绝sft,scp等不同行为。
评论
真好这是最简单的配置方法,完全不需要接触sshd_config。只需在passwd文件中更改外壳并完成即可。
–桃文
18年8月22日在7:47
他们说rssh现在似乎已经过时了(debian buster中已经没有此软件包了),他们说是急于代替它。我没有尝试过,我正在使用internal-sftp转到openssh。
–user3132194
20年4月1日在9:59
#4 楼
您可以修改/ etc / passwd并为该用户提供伪造的外壳,以使他不能使用ssh。评论
你测试了吗?
–splattne
2012年1月29日在8:49
当我尝试将shell设置为/ bin / false时,ssh或sftp都不起作用
–布拉德·梅斯(Brad Mace)
13年3月14日在22:34
/ bin / false禁止任何形式的登录,这不是正确的方法。 Rob Wouters的公认答案是如何限制用户仅使用SFTP,而不是更改外壳。如果您确实想更改外壳,则@Stone的连接将是一个好主意。
– jwbensley
2014年8月7日10:46
因此,假设/ bin / bash是不可接受的,并且/ bin / false或/ sbin / nologin拒绝访问,应该使用什么shell?
–普特尼克
17年11月20日在23:07
#5 楼
如上所述,我使用将用户外壳指定为/ bin / false的方法。但是,必须确保/ bin / shell在/ etc / shells中。然后它可以正常工作ssh = no ftp = ok。我也使用vsftpd并将其添加到
/etc/vsftpd/vsftpd.conf
,以便ftp-ers不能看到自己的日期。
这些简单更改的优点是每个用户的ssh config都不会令人讨厌。
#6 楼
不要忘记查找行UsePAM yes
并对其进行注释:由于不需要PAM的高级功能,因此很好。评论
注释掉您不理解的行通常是一个坏主意。如果您不知道PAM的用途,只需将其设置为默认值即可。
–马修·布什(Matthew Bush)
20-11-10在5:22
#7 楼
如果您安装了scponly
或rssh
,将ssh配置为仅对某些选定用户启用sftp是一个好主意,并且可以正常工作。rssh
可以正常工作,除非您需要配置jail。尝试遵循CHROOT手册提供的说明是很疯狂的,导致在“每个用户监狱”下方“复制”系统可执行文件和库的大部分,包括rssh
shell本身。这是一种浪费空间的方法。
scponly
需要对配置有深刻的了解,从而导致在监狱设置的情况下始终存在登录拒绝问题。 ,SSL / TLS对安全交易和登录的支持是使用“老旧但可以正常工作的” VSFTPD,它可以快速干净地安装并根据需要提供所有可配置性,最后但并非最不重要的是:它可以工作! />毛里齐奥。#8 楼
不幸的是,所有答案都极具误导性:请执行以下操作:首先创建sftp用户和组sftp
创建单独的目录作为SFTP文件的根目录:
sudo mkdir -p /home/sftpdir
具有经过测试的sshd_config文件,出于安全原因,该文件允许通过端口22进行SSH,但也可以在随机端口上进行SFTP。
重新启动并检查sshd服务的状态
sudo服务sshd重新启动
服务sshd状态
创建Shell文件。添加执行以回显通知消息
sudo touch / bin / sftponly
echo -e'#!/ bin / sh \ necho“此帐户仅限于SFTP访问。 sudo tee -a / bin / sftponly
授予执行权限并追加到shell文件
sudo chmod a + x / bin / sftponly
echo “ / bin / sftponly” | sudo tee -a / etc / shells
最终测试,您应该无法连接。
使用带有SSH密钥和基本详细信息的SFTP客户端的模板:
sftp -v -oPort = $ RANDOM_PORT -i〜/ .ssh / $ SSH_KEY.pem sftpuser @ $ HOST
评论
哇!太棒了!我将对此进行测试,然后返回此处进行验证。非常感谢!
–汤米B.
2012年1月28日在20:48
为ChrootDirectory事物+1!
–凯尔
2012年1月30日18:30
完成此操作后,我的sftponly用户无法通过ssh访问,并且能够通过sftp连接。但是,它根本看不到任何文件!尽管这些文件对此用户具有权限。 :-(
–埃米利奥·尼古拉斯(EmilioNicolás)
15年1月15日在10:17
如果您要执行此操作,并在sshd_config中找到已经存在“ / usr / lib / openssh / sftp-server”的条目,请在此处检查:serverfault.com/questions/660160/…-internal-sftp是“较新的” ,变得更好,更轻松”
– Xosofox
15年7月16日在10:57
主目录不仅应由root拥有,还应具有755权限(没有写访问权限),这使此chroot附加收据在大多数情况下不可用。
– Victor Gavro
20 Mar 14 '22在12:12