OpenSSH下SFTP的配置

OpenSSH下SFTP的配置

OpenSSH网站上那只SSH刺河豚将FTP埋葬

有关sftp有人推荐www.ssh.com的实现,不过我更喜欢开源的产品,特别是Open系列的安全产品。

需求

首先我们明确我们的目标,我们是希望通过SFTP代替FTP,需求是这样的:
  1. 这些用户只能通过SFT访问服务器
  2. 用户要锁定在相应的目录下
我想通常的思路是这样的:
  1. 打开OpenSSH的SFTP
  2. 将这些用户设置在一个
  3. 让OpenSSH识别这个组,只允许这些用户使用SFTP
  4. 最后系统要自动的将用户chroot在用户目录下

配置

我开始都觉得是不是要求太高,不过OpenSSH可以解决以上所有问题。话说回来,如果不能解决怎么可以把FTP埋葬呢。

SSHD_CONFIG

sshd通常是打开了sftp的,不过我们应该使用 internal-sftp在sshd_conf中作如下配置:
 1  # Subsystem sftp /usr/lib/openssh/sftp-server # 注释掉
 2  Subsystem sftp internal-sftp
 3 
 4  ##
 5  Match group sftponly
 6      ChrootDirectory /sftphome/%u
 7      X11Forwarding no
 8      AllowTcpForwarding no
 9      ForceCommand internal-sftp
10 
解释一下:当sshd匹配到sftponly组中的用户,就会强制使用sftp(ForceCommand的作用),并将用户限定在/sftphome/下相应用户的目录下(ChrootDirectory的作用)。

创建用户

我们需要创建相应的用户了:

#useradd -G sftponly -d /sftphome/sftpuser  -s /usr/sbin/nologin sftpuser
#tail /etc/password

sftpuser:x:
1000 : 1000 ::/sftphome/sftpuser:/usr/sbin/nologin
#passwd sftpuser
你可以在其他机器上用sftp登录试试了。你的连接将会被reset!去看看sshd的日志,你会发现pam.d的认证是通过了的,但是chroot失败了。按网络上的说法
#chown root /sftphome/sftpuser
#chmod 
755  /sftphome/sftpuser
再试,可以登录。新的问题是不能在此目录下写入。对的嘛,755对于组用户是不能写啊。再试试775,刚才的问题就来又了,chroot失败。

以上内容网络上一google一大把。

可以登录不能写这个问题真让人困惑!后来我想可能应该这样理解:既然要chroot,那个目录不属于root肯定是不行的(说错了,猛拍砖)。那我们就不能为用户提供完整的sftp服务了吗?我想可以这样
#mkdir /sftphome/sftpuser/space
#chown sftpuser.sftpuser /sftphome/sftpuser/space
由系统管理员为sftp用户提供一个目录,并设置其用户属性,用户在这个目录下用户是可写的。当然可以创建很多个。

这样算不算解决这个问题呢?暂且如此吧。如果您有好方法,一定告知哦。


你可能感兴趣的:(OpenSSH下SFTP的配置)