用rssh配置chroot的sftp

    日常网络管理中上传和下载文件,普遍都是使用ftp,但是由于ftp的安全性。我们现在都会使用sftp和scp替代ftp。但是我们更希望用户只能scp和sftp来传文件,不希望用户能登录系统。
    rssh就是这样一个软件,可以配合openssh把用户chroot在特定目录内上传和下载,并使该用户无法登录终端shell。
    从 http://www.pizzashack.org/rssh/ 下载 rssh-2.3.2.tar.gz。
    编译安装rssh:
    $./configure �Cprefix=/usr --sysconfdir=/etc
    $make
    $su -
    #make install
    新增一名用户作测试:
    #useradd test   #安装普通方式建立用户
    #usermod -s /usr/bin/rssh  test   #更改用户的shell
    #sh mkchroot.sh /home/test    #设置用户登录的目录为chroot
    #vi /etc/rssh.conf
    修改一下参数:
    allowsftp
    user=077:00010:“/home/test”
   
FAQ
    由于用户登录进chroot目录中后即无法访问/dev/log,所以用下面的命令在chroot目录中建立一个FIFO文件.
        # service syslog stop
        # /sbin/syslogd -a /home/test/dev/log
        # service syslog start

        查看/home/test/dev下面多了一个log文件。

10. # mknod -m 666 /home/test/dev/null c 1 3     # 此处会解决在Linux下用sftp连接时提示connection closed,并且syslog中没有任何错误提
示的情况。

11. 此时在linux下使用 # sftp read@serverip 或者 在win下使用filezilla通过sftp方式即可登录。


问:想把用户限制在某个特定的目录下,该怎么办?
答:比如把read用户限制在 /usr/local/tomcat/webapps/ 下面,则:
      1.  确保 /etc/passwd 中read用户的登录shell为/usr/local/bin/rssh

      2.  复制 /opt/chroot/user/ 下面的所有内容到/usr/local/tomcat/webapps 下面,然后修改/usr/local/tomcat/webapps下面的dev、etc等刚复制
过来的目录的拥有者为read,并且修改chroot目录下的 home/read的所有者和组为read。

        3.  编辑/usr/local/etc/rssh.conf,修改user=.....中的目录到相应目录即可。

4.   登录测试。

问:我想再添加一个受限用户,咋办?
答:凉拌。
       1。 # useradd -s /usr/local/bin/rssh rsshtest & passwd rsshtest
       2。 # grep rsshtest /etc/passwd >> /opt/chroot/user/etc/passwd
       4。 编辑/usr/local/etc/rssh.conf,添加 user=rsshtest:022:00011:"/opt/chroot/user"
       5。然后即可登陆测试,如果想限制在其他特定的目录中,请参考上面的问题解答。

注意:

       1.   如果在不同的chroot目录中,只有重新执行/sbin/syslogd -a /chroot/user/dev/log才能在日志中记录新的用户的信息。
       2.  如果不能登录,试着把/chroot/user/dev/下的null删了重建。
       3.  如果在/etc/ssh/sshd_config中做了allowUsers的限制,确保新加的用户在允许列表里面。

问:我完全按照你的步骤做了,但win下使用filezilla无法登录,系统日志中提示:

答:执行 ldd /usr/libexec/openssh/sftp-server,出现下面的文件,
        libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002aaaaacc6000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00002aaaab00d000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00002aaaab210000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00002aaaab425000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002aaaab63c000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00002aaaab870000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002aaaaba86000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002aaaabcb0000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002aaaabf38000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002aaaac15e000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaac360000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaac564000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002aaaac8b3000)
        /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)

       检查 /opt/chroot/user下对应的目录中是否有上面所列的文件,没有的话复制进来,完成后再试就可以了。


本文参考如下文章:
http://hi.baidu.com/feixingqi/blog/item/27f70d33fdd866fd1b4cff5d.html
http://www.dup2.org/node/296

你可能感兴趣的:(网络,sftp,休闲,chroot,rssh)