原创

Ubuntu开启SFTP服务


一、下载安装openssh-server

sudo apt-get update    # 更新软件索引
sudo apt-get install openssh-server

二、创建 sftp 用户组 sftp-group

sudo addgroup sftp-group

三、创建 sftp 用户 sftp-user

# 将 sftp-user 添加到 sftp 用户组
sudo adduser sftp-user
# 将 sftp-user 添加到 sftp-group 用户组,并从其他用户组移除
sudo usermod -G sftp-group -s /bin/false sftp-user
# 将 root 添加到 sftp 用户组
usermod -a -G sftp-group root

四、创建共享目录配置权限

# 创建 sftp 共享目录
sudo mkdir /data/shared
# 先将目录分配给 root
chown root /data/shared
chmod 755 /data/shared
# 再将目录转让给 sftp-group 用户组
chgrp -R sftp-group /data/shared
# 将目录分配给 sftp-user 用户
chown -R sftp-user:sftp-group /data/shared
chmod 755 /data/shared

五、配置 ssh , /etc/ssh/sshd_config

# AllowGroups sftp-group 只允许 sftp-group 用户组访问系统
Match Group sftp-group    # 允许 sftp-group 用户组访问
Match User sftp-user    # 允许 sftp-user访问
# 为 sftp-group 用户组设置访问根目录,为方便可以直接设置为 shared 目录
ChrootDirectory /data/shared
# 密码认证
PasswordAuthentication yes
# 禁止 TCP Forwarding
AllowTcpForwarding no 
# 禁止 X11 Forwarding
X11Forwarding no
# 强制该组用户仅仅使用SFTP
 ForceCommand internal-sftp 

六、重启服务,重启系统以生效

/etc/init.d/ssh restart
sudo reboot now

七、基础 sftp 命令

# 连接
sftp -p sftp-user@192.168.1.1// 上传文件
# put 本地文件的路径 将文件版保存到远程主机的路径
# 下载文件get 远程主机下文件的路径 将文件保存到本地电脑的路径 

如果你链接服务器的时候出现下面的提示:

Write failed: Broken pipe Couldn't read packet: Connection reset by peer 这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:

  • 目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。
  • 目录开始一直往上到系统根目录为止都不可以具有群组写入权限
环境配置
Linux
  • 作者:Daozhi(联系作者)
  • 发表时间:2019-11-20 19:31
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论