我已经有了Digital Ocean的CentOs 6.4版本,想要成功创buildSFTP用户,并把它们监禁到用户自己的chroot home目录中,但是我担心我会搞砸这个。
我已经尝试了很多东西,其中大部分可能是不正确的,或者说不太合理,但是我觉得应该是正确的过程,我尝试过的是:
为sftp创build一个组:
groupadd sftp
创build一个用户并设置他们的主目录: –
useradd -d /var/www/vhosts/domain.com dummyuser
为用户设置密码: –
passwd dummyuser
将用户的组更改为'sftp': –
usermod -g sftp dummyuser
将用户的shell设置为/bin/false : –
usermod -s /bin/false dummyuser
在sshd_config ( /etc/ssh/ )中编辑子系统: –
#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
将以下内容添加到sshd_config文件的底部:
Match group sftp X11Forwarding no ChrootDirectory %h AllowTcpForwarding no ForceCommand internal-sftp
我确保以下所有的目录都是root:root : –
/var /var/www /var/www/vhosts /var/www/vhosts/domain.com
如果我然后尝试通过用户dummyuser (在WinSCP中)通过SFTPlogin到服务器,我得到以下内容: –
Authentication log (see session log for details): Using username "dummyuser". Authentication failed.
我想要达到的目标是将用户关在主目录中。 我也有vsftpd设置和configuration。 用户可以login,但可以访问整个服务器 – 我只是没有设法让监狱工作。
忘了提及,我然后重新启动sshd : –
service sshd restart
当在WinSCP中产生错误时,他们的帮助页面就在这里 。
/var/log/secure
我用server_namereplace了实际的服务器名称。
Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0) Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/" Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
这是一个常见的陷阱:
所有到chroot home的文件夹都必须拥有且只能由root用户写入。
该文件夹不能成组写入 – 即使该组是root 。
我在CentOS 6.5上find并成功configuration了sftp: http : //www.thegeekstuff.com/2012/03/chroot-sftp-setup/
编辑sshdconfiguration:
vim / etc / ssh / sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server (comment out the default with "#") add: Subsystem sftp internal-sftp Match Group sftp-only ChrootDirectory /var/www/%u AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp
退出并保存。
然后:
mkdir /etc/skel2 groupadd sftp-only getent group |grep sftp-only (take note the GID (Group ID). Here, in my example it's 500)
对于名为“testuser”(具有GID 500的sftp-only组的成员)的新用户:
useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser
(我使用空的/ etc / skel2,所以没有.bashrc等由CentOS默认复制)
mkdir -p /var/www/testuser/home/testuser chown root:sftp-only /var/www/testuser chmod 750 /var/www/testuser chown root:root /var/www/testuser/home chmod 755 /var/www/testuser/home chown testuser:sftp-only /var/www/testuser/home/testuser chmod 770 /var/www/testuser/home/testuser
所以在这个例子中,我使它能够安全地访问pipe理网站的外部咨询公司。 你可以在创build完所有这些之后:
mkdir /var/www/testuser/home/testuser/www.somesite.com chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)
人们可以根据需要微调所有这一切。
希望这有助于!
Guy Boisvert IngTegration inc。 http://www.ingtegration.com