CentOS configuration uses the SFTP server
SFTP,即 SSH 文件传输协议( SSH File Transfer Protocol ),或者说是安全文件传输协议( Secure File Transfer Protocol )。SFTP 是一个独立的 SSH 封装协议包,通过安全连接以相似的方式工作。它的优势在于可以利用安全的连接传输文件,还能浏览本地和远程系统上的文件系统。
在很多情况下,SFTP都比FTP更可取,因为它具有最基本的安全特性和能利用 SSH 连接的能力,FTP是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。
1 |先决条件:
服务器 OpenSSH-Server 版本最低4.8p1,因为配置权限需要版本添加的新配置项 ChrootDirectory 来完成。
如何查看OpenSSH版本,命令如下:
$ ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2 | 创建用户信息
添加用户组:
$ groupadd sftp
添加用户:
$ useradd -g sftp -s /sbin/nologin -M userrenwolecom 参数注解: -g # 加入用户组
-s # 指定用户登入后所使用的shell
/sbin/nologin # 用户不允许登录
-M # 不要自动建立用户的登入目录
设置用户密码:
$ passwd userrenwolecom
3 |创建用户目录并设置权限
创建sftp主目录:
$ mkdir /data/sftp
设置sftp主目录权限:
$ chown root:sftp /data/sftp
文件夹所有者必须是root,用户组可以不是root。
$ chmod 744 /data/sftp
权限不能超过755但不包括755,否则会导致登录报错。
4 |创建上传目录并设置权限
在/data/sftp/主目录下创建uploads资料夹,并设置所有者是:userrenwolecom,用户组隶属:sftp,这样新增的帐号才能有上传编辑的权限。
$ mkdir -p /data/sftp/uploads
$ chown userrenwolecom:sftp /data/sftp/uploads
5 |修改sshd_config配置文件
$ vim /etc/ssh/sshd_config
将此行注释掉,例如:
#Subsystem sftp /usr/libexec/openssh/sftp-server
在此行下面添加如下内容:
Subsystem sftp internal-sftp # 指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
ChrootDirectory /data/sftp/ # 限制用户的根目录
ForceCommand internal-sftp # 只能用于sftp登录
AllowTcpForwarding no # 禁止用户使用端口转发
X11Forwarding no # 禁止用户使用端口转发
重启SSH服务
$ systemctl restart sshd
6 |测试是否能够登录、上传、下载等操作
在10.28.204.61服务器执行以下命令登录:
$ sftp -P 12012 userrenwolecom@10.28.204.62
userrenwolecom@10.28.204.62's password:
packet_write_wait: Connection to 10.28.204.62 port 12012: Broken pipe
Couldn't read packet: Connection reset by peer
报错,此问题是由于/data/sftp 目录权限分配不当所致,将此目录的所有者更改为root即可,用户组可root/sftp。
再次测试连接:
$ sftp -P 12012 userrenwolecom@10.28.204.62
The authenticity of host '[10.28.204.62]:12012 ([10.28.204.62]:12012)' can't be established.
ECDSA key fingerprint is SHA256:/YI/L4RT1QH7lkfxMCAkKnvniQslyUl15mOUKUo8K3k.
ECDSA key fingerprint is MD5:6d:b6:f3:93:8e:48:53:24:9d:5d:c2:2a:5f:28:f4:d2.
Are you sure you want to continue connecting (yes/no)? YES
Warning: Permanently added '[10.28.204.62]:12012' (ECDSA) to the list of known hosts.
userrenwolecom@10.28.204.62's password:【输入userrenwolecom用户密码回车】
Connected to 10.28.204.62.
sftp>
连接成功,现在测试上传一个文件到10.28.204.62服务器
上传
sftp> put /tmp/nginx_log_stat /uploads
Uploading /tmp/nginx_log_stat to /uploads/nginx_log_stat
/tmp/nginx_log_stat
下载
sftp> get uploads/nginx_log_stat /mnt
Fetching /uploads/nginx_log_stat to /mnt/nginx_log_stat
/uploads/nginx_log_stat 100% 7 1.1KB/s 00:00
sftp>
删除
sftp> rm /uploads/nginx_log_stat
Removing /uploads/nginx_log_stat
更多命令请参阅:
sftp> help
小结:
在配置过程中遇到比较奇怪的问题,我将 sshd_config 配置文件中的 Match Group sftp 修改为 Match User userrenwolecom ,重启sshd后,当前终端不会断开,新建终端输入正确密码后会出现SSH登录闪退(自动关闭终端)问题,不管是用PUTTY还是Xshell均是如此,后来我将用户修改成组后就正常了,具体原因尚未可知,不过修改为组效果是一样的。如果你知道什么原因还请指教。
CentOS configuration uses the SFTP server的更多相关文章
- 如何在 CentOS 7 上安装 Percona Server
在这篇文章中我们将了解关于 Percona 服务器,一个开源的MySQL,MariaDB的替代品.InnoDB的数据库引擎使得Percona 服务器非常有吸引力,如果你需要的高性能,高可靠性和高性价比 ...
- FileZilla 客户端连接vsftp无法访问 Received unexpected end-of-file from SFTP server 解决之路
首先在win通过ftp连接centos过程中,出现了2个问题,现在对此记录一下,方便后人遇到问题进行查阅 1.由于加密协议不同,需要在ftp客户端设置一下,支持ssh模式,具体自行百度: 2.在设置完 ...
- P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1
P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1 May ...
- Mac OS X 上启动 FTP/SFTP server,并设置 log level
木易小伟的博客| 木易小伟的博客 2013-08-13 5708 阅读 FTP Log SFTP Mac OS 系统配置 1. 启动FTP Server: 命令行下, sudo -s launch ...
- Linux Centos 6.6搭建SFTP服务器
Linux Centos 6.6搭建SFTP服务器 在Centos 6.6环境使用系统自带的internal-sftp搭建SFTP服务器. 打开命令终端窗口,按以下步骤操作. 0.查看openssh的 ...
- CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)
CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址.服务启动等) 原 一事能狂便少年 发布于 2016/12/27 11:16 字数 1113 阅读 1.3K 收藏 0 ...
- Centos 6.x 搭建 Zabbix Server
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让 ...
- 在 Azure CentOS VM 中配置 SQL Server 2019 AG - (上)
前文 假定您对Azure和SQL Server HA具有基础知识 假定您对Azure Cli具有基础知识 目标是在Azure Linux VM上创建一个具有三个副本的可用性组,并实现侦听器和Fenci ...
- Linux(CentOS)上配置 SFTP(附解决Write failed: Broken pipe Couldn't read packet: Connection reset by peer)
#创建sftp组: groupadd sftp #创建一个用户sftpuser: useradd -g sftp -s /bin/false sftpuser #提示: /etc/group 文件包含 ...
随机推荐
- video兼容ie,ckplayer网页播放器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- adblock广告过滤
1.在 img的 src中 出现 ad连在一起的情况,会被adblock过滤掉. 例如 <img id="adasdd" class="ad_mina" ...
- PSP第二次总结
项目计划总结: 姓名:李志强 日期:2017/12/06 听课 编程 阅读课本 准备考试 日总计 周日11.26 周一 100 100 周二 ...
- 设计模式课程 设计模式精讲 3-7 接口隔离原则讲解及Coding
1 主讲内容 1.1 核心内容 1.2 优点 1.3 课程记录 2 代码演练 2.1 接口隔离原则反比 2.2 接口隔离原则正比 1 主讲内容 1.1 核心内容 总结:细粒度可以进行再组装,粗粒度不可 ...
- day8 文件的读取
只读 只写 追加 读写 功能 username = input('请输入你要注册的用户名:') password = input('请输入你要注册的密码:') with open('list_of_i ...
- etc/passwd 和 /etc/shadow 文件内容及其解释
/etc/passwd 和 /etc/shadow 文件内容及其解释 默认情况下,/etc/passwd 存储有关本地用户的信息 /etc/passwd 采用以下格式: 1)username ...
- C#用SQLDMO操作数据库----转载
C#用SQLDMO操作数据库 sqldmo.dll是随sql server2000一起发布的.sqldmo.dll自身是一个com对象 sqldmo(sql distributed managemen ...
- PDO 小知识
一.前言 PDO(PHP Data Object)提供了一个通用接口访问多种数据库,即抽象的数据模型支持连接多种数据库. PDO扩展为PHP定义了一个访问数据库的轻量.持久的接口.其本身并不能实现任何 ...
- android中按back键返回上一个activity,如何重新调用上一个activity的oncreate方法?
默认情况下是不会调用的. @Override public void onBackPressed() { String titleStr = edittitle.getText().toString( ...
- eclipse js文件无法保存错误
错误信息如下 Save Failedjdk.nashorn.internal.runtime.ECMAException.getEcmaError()Ljava/lang/Object; 网上多番查找 ...