Answers:
从版本4.9开始,OpenSSH(在centos 5.x中不可用,但ChrootDirectory功能已向后移植)具有一个internal-sftp
子系统:
Subsystem sftp internal-sftp
然后阻止其他用途:
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
将您的用户添加到该sftponly
组。/
由于chroot,您必须将用户的主目录更改为,并且/home/user
应归root
。我还将设置/bin/false
为用户的外壳。
Checkout rssh是一个伪造的shell,它允许sftp但拒绝ssh
有关RSSH的更多信息
http://www.pizzashack.org/rssh/
转速
http://pkgs.repoforge.org/rssh/
您可以将rssh配置为允许/拒绝sft,scp等不同行为。
您可以修改/ etc / passwd并为该用户提供一个伪造的外壳,以使他不能使用ssh。
/bin/false
ssh 或 sftp 都不起作用时
不要忘记找到这一行UsePAM yes
并对其进行评论:
#UsePAM yes
如果不禁用此功能,您的SSH服务器将在重新加载/重新启动时崩溃。由于您不需要花哨的PAM功能,所以很好。
将ssh配置为仅对某些选定用户启用sftp是一个好主意,并且只要您安装scponly
或,它就可以正常工作rssh
。
rssh
除非您需要配置监狱,否则工作正常,在这种情况下,尝试遵循CHROOT手册提供的说明是疯狂的,导致“复制”系统可执行文件和库的大部分位于“每个用户监狱”下面,包括rssh
外壳本身。这是一种浪费空间的方法。
scponly
需要对配置有深入的了解,从而导致在监狱建立时出现拒绝登录的问题。
允许“ ftp”功能在监狱中正常工作的简单方法,对安全交易和登录的SSL / TLS支持是使用“老旧但可正常工作的” VSFTPD,它可以快速干净地安装并根据需要提供所有可配置性,最后但并非最不重要:它有效!
毛里齐奥。
不幸的是,所有答案都极具误导性:请执行以下操作:
首先创建sftp用户和组sftp
创建单独的目录作为SFTP文件的根目录: sudo mkdir -p /home/sftpdir
#$OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Port 38250 Port 22 PasswordAuthentication no ChallengeResponseAuthentication no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes X11Forwarding yes PrintMotd no # Allow client to pass locale environment variables AcceptEnv LANG LC_* #DenyUsers sftpuser # override default of no subsystems Subsystem sftp internal-sftp Match group sftp Match User sftpuser Match LocalPort 38250 ForceCommand internal-sftp ChrootDirectory /home/sftpdir PermitTunnel no AllowAgentForwarding no X11Forwarding no AllowTcpForwarding no
重新启动并检查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回声“ / bin / sftponly” | sudo tee -a / etc / shells
最终测试,您应该无法连接。
将SFTP客户端与SSH密钥和基本详细信息一起使用的模板:
sftp -v -oPort = $ RANDOM_PORT -i〜/ .ssh / $ SSH_KEY.pem sftpuser @ $ HOST