Ubuntu创建sftp账号

3280阅读 0评论2023-06-13 centrify
分类:LINUX

在Ubuntu上创建SFTP(SSH文件传输协议)账号,你可以按照以下步骤进行操作:


1. 确保你已经安装了OpenSSH服务器软件包。如果没有安装,可以使用以下命令安装:
   ```
   sudo apt update
   sudo apt install openssh-server
   ```


2. 创建一个新的系统用户。你可以使用以下命令创建用户,其中`username`是你要创建的用户名:
   ```
   sudo adduser username
   ```


3. 配置SFTP访问权限。编辑SSH服务器的配置文件`/etc/ssh/sshd_config`,使用你喜欢的文本编辑器(如nano)进行编辑:
   ```
   sudo nano /etc/ssh/sshd_config
   ```


4. 在配置文件的末尾添加以下行,用于限制SFTP用户的访问:
   ```
   Match User sftp_test
       ForceCommand internal-sftp
       ChrootDirectory /home/sftp_test
       PermitTunnel no
       AllowAgentForwarding no
       AllowTcpForwarding no
       X11Forwarding no
   ```


   注意将`username`替换为你创建的用户名,并将`/home/sftp_test`替换为用户将被限制在其中的目录路径。


5. 保存并关闭配置文件。


6. 重新加载SSH服务器配置,使更改生效:
   ```
   sudo service ssh reload
   ```


现在,你已经成功创建了一个SFTP账号,并限制了用户的访问权限。用户只能通过SFTP协议访问指定的目录,而不能执行shell命令。

7. 遇到如下报错
[root@Ubuntu~]# sftp sftp-test@10.0.0.146
sftp-test@10.
0.0.146's password: packet_write_wait: Connection to 10.0.0.146 port 22: Broken pipe Couldn't read packet: Connection reset by peer

ChrootDirectory 设定不当,会导致sftp链接时直接抛出 Connection reset 错误。 ChrootDirectory 指定的目录以及其所有父目录,拥有者都必须是root。其所有权限都要小于等于755。任意一个大于755都会导致Connection reset问题

下面修改/home/sftp_test权限,改成750

那给/home/sftp_test权限设置成770, /home/sftp_test root:sftp 770呢,这样设置又不能登录了,因为违法了ChrootDirectory所禁锢住的目录权限不能超过755。

可以让用户上传的方法是在/home/sftp_test目录下新建一个upload(随便什么名字都可以),属主是sftp_test,给rwx权限,这样用户在这个目录下可以进行所有操作。

root@dimeno-Ubuntu-01 14:44:45:/home$ls -al
drwxr-xr-x  6 root root 4096 6月  13 14:26 sftp_test

root@dimeno-Ubuntu-01 14:44:50:/home$ls -al sftp_test/
drwxr-xr-x 2 sftp_test sftp_test 4096 6月  13 14:27 sftp_test
root@dimeno-Ubuntu-01 14:44:53:/home$

上一篇:查看工商信息的网站
下一篇:Mysql8安装配置