您的位置:首页 > 编程语言 > PHP开发

用rssh配置chroot的sftp

2009-12-22 22:31 381 查看
日常网络管理中上传和下载文件,普遍都是使用ftp,但是由于ftp的安全性。我们现在都会使用sftp和scp替代ftp。但是我们更希望用户只能scp和sftp来传文件,不希望用户能登录系统。
rssh就是这样一个软件,可以配合openssh把用户chroot在特定目录内上传和下载,并使该用户无法登录终端shell。
http://www.pizzashack.org/rssh/ 下载 rssh-2.3.2.tar.gz。
编译安装rssh:
$./configure –prefix=/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