在Docker中开启sftp服务
2021年9月1日...大约 1 分钟
安装ubuntu
拉取镜像
docker pull arm64v8/ubuntu
启动容器
sudo docker run --restart always -it --name ubuntu -p 2233:22/tcp -v /home:/data arm64v8/ubuntu:latest
-p
:将22端口映射到宿主机的2233端口-v
:将宿主机的home
目录挂载到docker中的data
目录上
安装ssh
更新源
apt update
安装
apt install vim openssh-server
配置开机自启,在/root/
下新建start_ssh.sh
#!/bin/bash
service ssh start
修改权限
chmod 764 start_ssh.sh
将脚本加入到启动文件中,在.bashrc
末尾增加如下语句
if [ -f /root/start_ssh.sh ]; then
./root/start_ssh.sh
fi
配置用户和SSH
用户配置
addgroup sftp-group
adduser sftp-user
// 将 sftp-user 添加到 sftp-group 用户组,并从其他用户组移除
usermod -G sftp-group -s /bin/false sftp-user
// 将 root 添加到 sftp 用户组
usermod -a -G sftp-group root
// 创建 sftp 共享目录
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配置
# AllowGroups sftp-group 只允许 sftp-group 用户组访问系统
# 允许 sftp-group 用户组访问
Match Group sftp-group
Match User sftp-user
# 为 sftp-group 用户组设置访问根目录,为方便可以直接设置为 shared 目录
ChrootDirectory /data/shared
# 密码认证
PasswordAuthentication yes
# 禁止 TCP Forwarding
AllowTcpForwarding no
# 禁止 X11 Forwarding
X11Forwarding no
# 强制该组用户仅仅使用SFTP
ForceCommand internal-sftp
然后重启容器
Powered by Waline v3.4.2