Ubuntu server上只有一个root用户,且通过ssh key方式登录服务器。
现需要需要创建一个测试帐号,用于给测试人员上传代码用,该帐号不需要用到ssh key。
步骤如下:
1、创建用户
bash
sudo adduser sftpuser
在创建用户时,系统会提示你设置密码和其他信息。完成后,用户的主目录将默认设置为 /home/sftpuser
。
2、修改用户主目录
bash
sudo usermod -d /var/www/ims sftpuser
将用户的主目录修改为 /var/www/ims
。
3、设置目录权限
bash
sudo chown root:root /var/www/ims
sudo chmod 755 /var/www/ims
确保 /var/www/ims
目录的权限正确,以便 sftpuser
可以访问。
然后,在 /var/www/ims
目录下创建一个子目录,用于 sftpuser
上传文件。
bash
sudo mkdir /var/www/ims/upload
sudo chown sftpuser:sftpuser /var/www/ims/upload
4、配置SSH以限制sftpuser的访问
编辑SSH配置文件 /etc/ssh/sshd_config
,添加以下内容:
bash
Match User sftpuser
ChrootDirectory /var/www/ims
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
PubkeyAuthentication no
-
Match User sftpuser
:指定要限制的用户。 -
ChrootDirectory /var/www/ims
:将用户的根目录限制为/var/www/ims
。 -
ForceCommand internal-sftp
:强制用户只能使用SFTP,不能使用SSH shell。 -
AllowTcpForwarding no
和X11Forwarding no
:禁用端口转发和X11转发。 -
PasswordAuthentication yes
:允许密码认证。 -
PubkeyAuthentication no
:禁用公钥认证。
5、重启SSH服务
bash
sudo systemctl restart ssh
6、测试sftp访问
bash
sftp sftpuser@your_server_ip
7、验证权限
bash
cd /home
如果配置正确,你应该会收到权限被拒绝的错误。
通过以上步骤, 你已经成功创建了一个只能访问 /var/www/ims
目录的SFTP账户,并且限制了其对其他目录的访问。
如果不成功,可以按以下步骤排查:
1、检查SSH配置
确保 /etc/ssh/sshd_config
中 sftpuser
的配置正确。特别是 ChrootDirectory
和 ForceCommand
部分。
此例中,sftpuser的主目录是/var/www/ims。
2、检查目录权限
用户主目录及其上层直至根目录的所有目录权限都应该是root:root,755
bash
ls -ld /var/www/ims
输出应该类似于:
bash
drwxr-xr-x 2 root root 4096 Oct 1 12:34 /var/www/ims
-
drwxr-xr-x
:表示权限为755
。 -
root root
:表示所有者和组均为root
。
ims的上级目录权限也应该如此。
3、检查SSH日志
bash
sudo tail -f /var/log/auth.log
查找相关错误信息。
-完-