Linux下Centos7.* 正确配置 sftp 服务

原文:Linux下Centos7.* 正确配置 sftp 服务

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp与ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。

其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

配置SFTP

SFTP是一种安全的交互式文件传输程序,其工作方式与FTP(文件传输协议)类似。然而sFTP比FTP更安全,它通过加密SSH传输处理所有操作。它可以配置使用几个有用的SSH功能,如公钥认证和压缩。它连接并登录到指定的远程机器,然后切换到交互式命令模式,在该模式下用户可以执行各种命令。

1、查看ssh版本

sftp是基于ssh协议的,首先查看ssh版本,openssh-server版本至少得是4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。

[root@test ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2、创建用户和组
[root@test ~]#groupadd sftp
[root@test ~]#useradd -g sftp -s /sbin/nologin sftp
3、目录授权

目录属主必须是root,权限可以是755或者750

chown root:sftp sftp
chmod 755 -R sftp
4、编辑配置文件/etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉这行
Subsystem sftp internal-sftp #增加以下6行
Match Group sftp
ChrootDirectory /home/%u #设定属于用户组sftp的用户访问的根文件夹
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no #设置不允许SSH的X转发
5、重启sshd服务
[root@test ~]#rcsshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
6、验证是否生效

在另一台客户机上,使用sftp 用户@IP进行连接

[root@dengqp02 share_root]# sftp sftp@10.20.2.23
Connecting to 10.20.2.23…
sftp@10.20.2.23’s password:
sftp> ls
a.txt
sftp>
常见问题:

如果你链接服务器的时候出现下面的提示: Write failed: Broken pipe Couldn’t read packet: Connection reset by peer 这个问题的原因是ChrootDirectory的权限问题,

你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是750或者755。

sftp 传输命令

1、常用登陆方式

格式:

sftp [user]@[host]

通过sftp连接[host],端口为默认的22,指定用户[user]。

2、查看sftp支持的命令
sftp>help
3、基本的使用
sftp> ls #list directory
sftp> pwd #print working directory on remote host
sftp> lpwd #print working directory on local host
sftp> mkdir uploads #create a new directory

SFTP上传文件夹

要将整个目录上传到远程 Linux 主机中,请使用put命令。但是,如果目录名称不存在于远程主机上的工作目录中,你将收到错误,如下面的屏幕截图所示。

因此,首先在远程主机上创建一个具有相同名称的目录,然后从本地主机上传它,-r参数允许拷贝子目录和子文件:

sftp> put -r Tecmint.com-articles
sftp> mkdir Tecmint.com-articles
sftp> put -r Tecmint.com-articles

Linux下Centos7.* 正确配置 sftp 服务

要保留修改时间、访问时间以及被传输的文件的模式,请使用-p标志。

sftp> put -pr Tecmint.com-articles

要从远程 Linux 主机下载整个 fstools-0.0 文件夹到本机中,如下所示使用get命令带上-r标志:

sftp> get -r fstools-0.0

Linux下Centos7.* 正确配置 sftp 服务

如果文件夹已经下载完成了,接着查看本机的工作目录。要退出 sFTP shell输入:

sftp> bye

或者

sftp> exit

图形化操作

sftp是完全图形化操作的,这里推荐使用xftp。在xftp里新建一个连接,注意协议需要选择SFTP,然后依次填写IP、账户和密码并连接登录。

原文地址:http://www.tigerbook.cn/article-104.html

Linux下Centos7.* 正确配置 sftp 服务Linux下Centos7.* 正确配置 sftp 服务 gb2311 发布了1 篇原创文章 · 获赞 1 · 访问量 3320 私信 关注
上一篇:教你使用Python批量更新服务器文件


下一篇:paramiko远程登录与sftp文件传输