sftp搭建

创建用户

创建用户组: sftp

# groupadd sftp

创建用户sftp远程用户:user01

# useradd -G sftp -s /sbin/nologin user01

设置用户密码:

# echo L33H********* |passwd --stdin user01

创建目录

创建sftp家目录:

# mkdir -p /u01/ftp/

sftp家目录权限注意:

ChrootDirectory
指定身份验证后chroot(2)到的目录的路径名。 路径名的所有组件都必须是root拥有的目录,任何其他用户或group均不可写。
chroot之后,sshd(8)将工作目录更改为用户的主目录。

创建sftp工作目录:

# mkdir /u01/ftp/work
# chown user01:sftp /u01/ftp/work
# chmod 755 /u01/ftp/work

配置sftp

编辑ssh配置文件:

# vim /etc/ssh/sshd_config
找到最下面
将 #Subsystem      sftp    /usr/libexec/openssh/sftp-server 注释
修改为
Subsystem      sftp     internal-sftp   -l INFO -f local5

### -l INFO -f local5: 加这个的意思是添加日志
 
在最下面修改如下:
Match Group sftp                        ###匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
        X11Forwarding no                ###是否允许进行 X11 转发
        AllowTcpForwarding no           ###是否允许TCP转发
        PermitTTY no                    ###如果是centos6 则不需要加这一条
        ChrootDirectory /u01/ftp/       ### sftp用户家目录
        ForceCommand internal-sftp

sftp访问日志

添加sftp访问日志:
vim /etc/rsyslog.conf 最下面加入一行:

auth,authpriv.*,local5.* /var/log/sftp.log

sshd 配置文件要写成如下:

Subsystem      sftp     internal-sftp   -l INFO -f local5
或者
Subsystem      sftp    /usr/libexec/openssh/sftp-server  -l INFO -f local5

修改后重启日志服务:

service rsyslog restart  如果是centos7以上执行systemctl restart rsyslog

修改好后重启sshd服务

# /etc/init.d/sshd restart   如果是centos7以上执行systemctl restart sshd

测试

使用其他机器测试访问:

# sftp user01@123.*.*.*:/work

测试是否可以访问 上传下载文件

报错 一般是权限问题

附录:

sftp-server和internal-sftp的区别:
sftp-server和internal-sftp都是OpenSSH的一部分。 
sftp-server是一个独立的二进制文件, internal-sftp只是一个配置关键字,告诉sshd使用内置sshd的SFTP服务器代码,而不是运行另一个进程(通常是sftp-server)。

从功能的角度来看,sftp-server和internal-sftp几乎完全相同。 它们是使用相同的源代码构建的。
internal-sftp的主要优点是,当与ChrootDirectory指令一起使用时,它不需要任何支持文件。
sftp命令使用:
1.sftp user@ip
你要用sftp, 当然得登录到sftp服务器啊, 在linux的shell中执行上面的命令后, linux shell会提示用户输入密码, 我们就输入password吧。 这样就成功建立了sftp连接。
2. help
建立连接后, linux shell中的$编程了sftp>,  这也对。 现在执行以下help, 可以看看sftp支持哪些命令。
3. pwd和lpwd
pwd是看远端服务器的目录, 即sftp服务器默认的当前目录。  lpwd是看linux本地目录。
4. ls和lls
ls是看sftp服务器下当前目录下的东东, lls是看linux当前目录下的东东。
5. put a.txt
这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。
6. get b.txt
这个是把sftp服务器当前目录下的b.txt文件下载到linux当前目录下。
7. !command
这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。
这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。
8. exit和quit
退出。
9. rm 删除sftp服务器文件
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Docker可以用来搭建SFTP(Secure File Transfer Protocol)服务器,这样你可以通过安全的文件传输协议在容器内部存储和访问文件。以下是使用Docker搭建SFTP服务器的一般步骤: 1. **选择SFTP服务器软件**: 使用一个支持SFTP的Docker镜像,如`proftpd/proftpd`,它是一个开源的FTP服务器,也可以用于SFTP。 2. **拉取镜像**: 在Docker命令行中运行: ``` docker pull proftpd/proftpd ``` 3. **运行容器**: 创建一个Dockerfile,指定proftpd镜像,并配置必要的环境变量和端口映射,例如: ```Dockerfile FROM proftpd/proftpd:latest RUN apt-get update && apt-get install -y sasl2-bin COPY sftp.conf /etc/proftpd/conf.d/ CMD ["proftpd", "-f", "/etc/proftpd/proftpd.conf"] ``` 这里假设你已经有一个`sftp.conf`配置文件,其中包含了SFTP服务器的设置。 4. **启动和运行容器**: ``` docker build -t sftp-server . docker run -d --name sftp-server -p 2222:21 -v /path/to/your/data:/data sftp-server ``` `-d`表示后台运行,`-p`将主机的2222端口映射到容器的21端口(FTP默认端口),`-v`将宿主机的目录挂载到容器内的/data路径,这样用户就可以访问这个目录。 5. **配置SFTP用户**: 需要在`sftp.conf`或外部文件中创建用户并分配权限。 6. **验证连接**: 使用SSH客户端或者SFTP客户端(如FileZilla)连接到`localhost:2222`或你的服务器IP地址,使用在Docker运行时创建用户名和密码尝试登录。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不仙520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值