我有一个使用Digital Ocean的CentOs版本6.4,并且想要成功创建SFTP用户并将其监禁到用户自己的chroot主目录中,但是我担心我会弄得一团糟。
我已经尝试了很多事情,但实际上太多了,因此无法在这里列出,因为大多数可能是不正确的或没有多大意义,但我认为应该是正确的过程,而我尝试的是:
为以下组创建一个组sftp
:
groupadd sftp
创建一个用户并设置其主目录:
useradd -d /var/www/vhosts/domain.com dummyuser
为用户设置密码:-
passwd dummyuser
将用户组更改为“ sftp”:-
usermod -g sftp dummyuser
将用户的外壳设置为/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中)通过SFTP登录服务器,则会得到以下信息:-
Authentication log (see session log for details):
Using username "dummyuser".
Authentication failed.
我要实现的只是将用户锁定到其主目录。我还设置并配置了vsftpd。用户可以很好地登录,但可以访问整个服务器-我只是没有设法工作而已。
编辑
忘了提一下,然后我又重新启动了sshd
:-
service sshd restart
当WinSCP中产生错误时,其帮助页面在此处。
记录结果
/var/log/secure
我将实际的服务器名称替换为server_name
。
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
/var/log/secure
。
vhosts
是这样的root:root
。
sshd
吗?服务器上的日志文件中包含什么?