- 论坛徽章:
- 0
|
我BLOG记录的地址, 很乱 http://hi.baidu.com/3444542/blog ... c5c7cea7ef3fb1.html
以前折前过openssh for linux 是成功的,但一直没在FreeBSD下面试成功,看到有网友也在折腾这功能,就打算花点时间弄弄
结果在权限位上卡了很长时间,太菜了没办法, 记录下来分享一下,免得可能有的朋友也遇到此问题浪费时间.
测试平台: freebsd 7.1-RELEASE-p7 + openssh-portable-5.2.p1_1,1
archlinux 下也用这个方法测试成功了
看到介绍,只要是>4.9 的openssh就可以使用chroot功能
大致过程如下:
一,使用adduser 新建一个叫sftp的用户, 用户目录在 /home/sftp
二,修改用户目录拥有者为root , 将group的写权限给干掉
否则会出现以下错误信息
- Aug 19 14:39:08 bsd sshd[22383]: fatal: bad ownership or modes for chroot directory "/home/sftp"
复制代码
这个错误折腾提长时间的
- sudo chown root:sftp /home/sftp
- sudo chmod g-w /home/sftp
- drwxr-xr-x 2 root sftp 512B 8 19 14:37 sftp
复制代码
三, 在/home/sftp 目录下新建两个目录,分别为 download, upload
修改upload的组权限可写,为了上传使用,而download是没有write权限的,只能下载
四,- /usr/ports/security/openssh-portable && sudo make config
复制代码 在这里要要将openssh_chroot功能选项使能
make install clean
五,安装完成后,会看到有提示信息,注意,它可是安在/usr/local/bin 下的,而原来的sshd可是/usr/sbin/sshd 下,源代码是在/usr/src/下面的
接下来要做的是将 原先的sshd禁用,开启openssh-portable安装的sshd, 将/etc/rc.conf 里的sshd设置为sshd_enable="NO", 添加 openssh_enable="YES", 就完成了启动所必须的工具.
- sshd_enable="NO"
- openssh_enable="YES"
复制代码
六. 重要的一点,需要修改的不是 /etc/ssh/sshd_config 而是 修改 /usr/local/etc/ssh/sshd_config 配置文件,切记别大意
- # override default of no subsystems
- #Subsystem sftp /usr/local/libexec/sftp-server <<<< 原来的这行注释掉
- Subsystem sftp internal-sftp <<<---添加的新行
- # Example of overriding settings on a per-user basis
- Match User sftp <<---- 匹配用户为 sftp , man sshd_config 有更详细的介绍,还支持用户组,同进设置多用户等
- ChrootDirectory /home/%u <<-------指定chroot的目录, %u 为转换成用户名, 也就是 /home/sftp 目录了,帮助上显示 %h就带表home了
- X11Forwarding no
- AllowTcpForwarding no
- ForceCommand internal-sftp <<---- 添加这句 internal-sftp
- #ForceCommand cvs server <<--- 这句也注释掉
复制代码
七, 停止原来的sshd服务,开启新的 openssh-portable的服务
- sudo /etc/rc.d/sshd stop
- sudo /usr/local/etc/rc.d/openssh start
复制代码
八. 测试方法特单说一下
(1) sftp -oPort 22 sftp@127.0.0.1 , -oPort 22 默认可以不写,但不推荐使用默认端口号,弄个大点的数字吧,免得别人来骚扰,不过我还准备了denyhosts, pf的禁止暴力破解等着
(2) 我很喜欢的工具lftp, 非常好用,还能自动补全等, 用法 lftp sftp://sftp:密码@127.0.0.1 -p 端口号
使用方法都差不多, 试着传个文件上去看看
- lftp [email]sftp@192.168.1.222[/email]:~> pwd
- s[url]ftp://sftp:1@192.168.1.222:22[/url]
- lftp [email]sftp@192.168.1.222[/email]:~> lpwd
- /home/axlrose
- lftp [email]sftp@192.168.1.222[/email]:~> ls
- drwxr-xr-x 4 0 1003 512 Aug 19 14:42 .
- drwxr-xr-x 4 0 1003 512 Aug 19 14:42 ..
- -rw-r--r-- 1 1003 1003 758 Aug 19 14:37 .cshrc
- -rw-r--r-- 1 1003 1003 258 Aug 19 14:37 .login
- -rw-r--r-- 1 1003 1003 167 Aug 19 14:37 .login_conf
- -rw------- 1 1003 1003 379 Aug 19 14:37 .mail_aliases
- -rw-r--r-- 1 1003 1003 339 Aug 19 14:37 .mailrc
- -rw-r--r-- 1 1003 1003 773 Aug 19 14:37 .profile
- -rw------- 1 1003 1003 284 Aug 19 14:37 .rhosts
- -rw-r--r-- 1 1003 1003 980 Aug 19 14:37 .shrc
- drwxr-xr-x 2 0 1003 512 Aug 19 14:42 download
- -rw-r--r-- 1 0 1003 8 Aug 19 14:41 this_sftp_dir.txt
- drwxrwxr-x 2 0 1003 512 Aug 19 16:17 upload
- lftp [email]sftp@192.168.1.222[/email]:/download> put bsd_pic1.jpg
- put: Access failed: Permission denied (bsd_pic1.jpg)
- lftp [email]sftp@192.168.1.222[/email]:/download> cd ..
- lftp [email]sftp@192.168.1.222[/email]:/> cd upload/
- lftp [email]sftp@192.168.1.222[/email]:/upload> put bsd_pic1.jpg
- 137286 bytes transferred
- lftp [email]sftp@192.168.1.222[/email]:/upload>
复制代码
大功告成,测试.
若有遗漏再补充,望请大虾们再指点一下
[ 本帖最后由 axlrose 于 2009-8-19 16:24 编辑 ] |
|