Linux系列之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

第一步:查看openssl的版本

ssh -V

版本必须大于4.8p1,低于这个版本需要升级。

第二步:创建sftp组

groupadd sftp

第三步:创建一个sftp用户

useradd -g sftp -s /bin/false sftpuser

创建一个用户名为sftpuser的用户,指定组sftp,且该用户不能登陆到系统

passwd sftpuser

为sftpuser用户设置密码

第四步:创建sftp指定Chroot目录

mkdir -p /data/sftp/

第五步:配置sshd_config配置文件

vi /etc/ssh/sshd_config

找到如下这行,用#符号注释掉。

# Subsystem sftp /usr/libexec/openssh/sftp-server

在文件最后面添加如下几行内容,然后保存:

Subsystem sftp internal-sftp #配置一个外部子系统,值是子系统的名字和对应的命令行

Match Group sftp #限定只有sftp组的才能访问      

ChrootDirectory /data/sftp/ #设置属于用户组sftp的用户访问的根文件夹

ForceCommand internal-sftp #强制执行这里指定的命令而忽略客户端提供的任何命令

AllowTcpForwarding no  #是否允许TCP转发

X11Forwarding no #是否允许进行 X11 转发  

Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

如果启用了 UseLogin ,那么X11转发将被自动禁止。

第六步:修改Chroot目录权限及建立sftp用户写入权限目录

目录权限这里有几点需要注意的:

        1.ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主必须是root;

        2.ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755;

        3.因为ChrootDirectory设置的目录只有root用户才有写的权限,这就导致sftpuser用户没法上传文件到该目录,因此可以ChrootDirectory设置的目录下新建一个sftpuser属主目录,让其拥有755权限即可。

①修改Chroot目录权限

chown -R root:sftp /data/sftp/

chmod -R 755 /data/sftp/

②建立sftp用户写入权限目录

cd /data/sftp/

mkdir upload

chown sftpuser:sftp upload

chmod 755 upload

第七步:重启sshd服务

7.x之前:

service sshd restart

7.x之后:

systemctl restart sshd

第八步:测试sftp登录

本机测试:

sftp [email protected]

远程连接测试:

sftp sftpuser@远程机ip地址

二、sftp的使用

cd        更改远程工作目录

lcd       更改和/或打印本地工作目录

ls        列出远程目录的内容

lls       列出本地目录的内容

pwd       打印远程工作目录

lpwd      打印本地工作目录

explore       浏览您的本地目录,即打开本地目录

get test.txt  把sftp服务器上当前目录下test.txt文件下载到本地当前目录

put test.txt  把本地文件当前目录下test.txt上传到ftp服务器当前目录

注意:sftp服务器cd切换目录只能在ChrootDirectory设置的目录及其子目录中切换,且以上命令可以根据需要灵活使用,这里只做基本使用介绍!!!

你可能感兴趣的:(linux,ssh,sftp)