Centos6.5搭建sftp服务器

Centos6.5搭建sftp服务器

SFTP,即 SSH 文件传输协议( SSH File Transfer Protocol ),或者说是安全文件传输协议( Secure File Transfer Protocol )。SFTP 是一个独立的 SSH 封装协议包,通过安全连接以相似的方式工作。它的优势在于可以利用安全的连接传输文件,还能浏览本地和远程系统上的文件系统。
在很多情况下,使用SFTP都比FTP更可取,因为它具有最基本的安全特性和能利用 SSH 连接的能力,FTP是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。
服务器 OpenSSH-Server 版本最低4.8p1,因为低版本不支持新配置项 ChrootDirectory ,而此处需要ChrootDirectory来配置权限
当然配置时请关闭防火墙和selinux

###系统环境

主机名 服务器IP openssl版本 openssh版本
sftp 172.17.0.2 OpenSSL 1.0.1e-fips OpenSSH_5.3p1

安装软件

# yum -y install openssl openssh-server openssh-clients

配置用户组

# groupadd sftp
# useradd -g sftp -s /sbin/nologin mysftp
# echo mypass | passwd --stdin mysftp
# mkdir -p /data/sftp/mysftp
# usermod -d /data/sftp/mysftp mysftp

配置sshd服务,编辑 /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                   # 禁止用户使用端口转发

设定Chroot目录权限及sftp用户登陆后可写入的目录

# chown root.sftp /data/sftp/mysftp           #文件夹所有者必须是root,用户组可以不是root。
# chmod 755 /data/sftp/mysftp                 #权限不能超过755但不包括755,否则会导致登录报错。
# mkdir /data/sftp/mysftp/upload              #创建用户上传目录
# chown mysftp.sftp /data/sftp/mysftp/upload        #
# chmod 755 /data/sftp/mysftp/upload

测试sftp服务器能否登录、上传、下载

  • 测试登录
    测试结果如下,则sftp服务正常登录

# sftp -p22 [email protected]
[email protected]’s password:
Connected to [email protected].
sftp>

若出现一下情况:

# sftp -p22 [email protected]
packet_write_wait: Connection to 172.17.0.2 port 22: Broken pipe
Couldn’t read packet: Connection reset by peer

出现以上情况的原因是:/data/sftp/mysftp 目录权限分配不当所致,将此目录的所有者更改为root即可,用户组可为root/sftp。

  • 测试上传

登录服务器

# sftp> put vars.yml
Uploading vars.yml to /upload/vars.yml
vars.yml

扫描二维码关注公众号,回复: 4220534 查看本文章
  • 测试下载

登录服务器

# sftp> get vars.yml /tmp
Fetching /upload/vars.yml to /tmp/vars.yml
/upload/vars.yml

  • 测试删除

登录服务器

# sftp> rm vars.yml
Removing /upload/vars.yml

小技巧

  • 登录sftp服务器后,可以使用部分shell命令,在shell命令前添加l,可以对本地主机操作。例如ls、lls、pwd、lpwd、cd、lcd等命令

猜你喜欢

转载自blog.csdn.net/weixin_40772259/article/details/84479954