Ubuntu搭建sftp

698 阅读1分钟

#1 下载安装 openssh-server

sudo apt-get install openssh-server

#2 创建 sftp 用户组 sftp-group

sudo addgroup sftp-group

#3 创建 sftp 用户sftp-jkglftp

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

#4 创建共享目录配置权限

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

#5 配置 ssh , /etc/ssh/sshd_config

cd /etc/ssh/sshd_config.d
sudo vim sftp.conf
# AllowGroups sftp-group 只允许 sftp-group 用户组访问系统
# 允许 sftp-group 用户组访问
Match Group sftp-group 
Match User sftp-jkglftp
# 为 sftp-group 用户组设置访问根目录,为方便可以直接设置为 shared 目录,目录必须是root:root否则会报错,比如此处如果设置为/data/shared/ 则报错
ChrootDirectory /data/
# 密码认证
PasswordAuthentication yes
# 禁止 TCP Forwarding
AllowTcpForwarding no 
# 禁止 X11 Forwarding
X11Forwarding no
# 强制该组用户仅仅使用SFTP
ForceCommand internal-sftp 

#6 重启服务,重启系统以生效

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

#7 基本命令

// 连接
sftp -p sftp-jkglftp@192.168.10.10
// 上传文件
put 本地文件的路径 将文件版保存到远程主机的路径
// 下载文件
get 远程主机下文件的路径 将文件保存到本地电脑的路径 
// 重启
sudo systemctl restart sshd
sudo service sshd restart
sudo /etc/init.d/ssh restart
// 验证密码
su sftp-jkglftp