创buildSFTP用户并在CentOS上监听chroot – 用户身份validation错误

我已经有了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中产生错误时,他们的帮助页面就在这里 。

logging结果

 /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