sftp服务器搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sftp服务器搭建相关的知识,希望对你有一定的参考价值。
注:本文搭建sftp的系统为CentOS 7 以上
sftp服务器两种搭建方式
1、直接在系统上新建一个用户即可,此种方式最简单,但最不安全,用户sftp登陆之后可以随意切换目录,切用户可以ssh登陆到系统,很不安全,生产环境中没这么干的,故不详细介绍了。
- 首先新建sftp登陆用户
useradd stp-u
echo sftp-u | passwd --stdin sftp-u
- 配置/etc/ssh/sshd_config
注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下
Subsystem sftp internal-sftp
Match User sftp-u
ChrootDirectory /opt/upload
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755
但如目录权限由于实际环境的原因不能修改权限的话,也可以通过软连接实现,但最底层的目录的属主任然为root,权限最大任然是755
修改目录权限
chown root.sftp-u test/
重启服务
service sshd reload
service sshd restart
登陆
sftp -P 22 sftp-u@xxx.xxx.xxx.xxx
显示本地目录
sftp> lls
1.json 2.json 3.json ls.txt put.sh
显示远程目录
stp> ls
1.json
上传
从本地上传文件到远程,本地不指定目录默认当前目录,远程不指定目录就是上传到根目录下
sftp> put 1.json
Uploading 1.json to /1.json
remote open("/1.json"): Permission denied
提示操作远程权限失败,因为这是往远程写,所以检查远程操作的目录是否有写权限,发现sftp-u用户对远程默认目录没有写权限
于是给sftp-u用户指定的根目录加上写权限,service sshd restart 发现还是不能上传。
发现需要在根目录下新建一个子目录,并且给上sftp-u用户写权限,才可以上传
chown root.sftp-u /root/upload/
mkdir /root/upload/file
chown sftp-u:sftp-u /root/upload/file
chmod 775 /root/upload/file
下载
sftp> get sftp-s.txt .
Fetching /file/sftp-s.txt to ./sftp-s.txt
总结
#file server
useradd sftp-u
echo sftp-u | passwd --stdin sftp-u
mkdir -p /root/upload/
chown root.sftp-u /root/upload/
mkdir /root/upload/file
chown sftp-u:sftp-u /root/upload/file
chmod 775 /root/upload/file
sed -i s/Subsystem\\tsftp\\t\\/usr\\/libexec\\/openssh\\/sftp-server/#Subsystem\\tsftp\\t\\/usr\\/libexec\\/openssh\\/sftp-server/g /etc/ssh/sshd_config
echo -e Subsystem sftp internal-sftp
Match User sftp-u
\\tChrootDirectory /root/upload
\\tForceCommand internal-sftp
\\tAllowTcpForwarding no
\\tX11Forwarding no >> /etc/ssh/sshd_config
以上是关于sftp服务器搭建的主要内容,如果未能解决你的问题,请参考以下文章