阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS7 configuration uses the SFTP server

43次阅读
没有评论

共计 2600 个字符,预计需要花费 7 分钟才能阅读完成。

导读 SFTP,即 SSH 文件传输协议(SSH File Transfer Protocol),或者说是安全文件传输协议(Secure File Transfer Protocol)。SFTP 是一个独立的 SSH 封装协议包,通过安全连接以相似的方式工作。它的优势在于可以利用安全的连接传输文件,还能浏览本地和远程系统上的文件系统。

在很多情况下,SFTP 都比 FTP 更可取,因为它具有最基本的安全特性和能利用 SSH 连接的能力,FTP 是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。

先决条件:

服务器 OpenSSH-Server 版本最低 4.8p1,因为配置权限需要版本添加的新配置项 ChrootDirectory 来完成。

如何查看 OpenSSH 版本,命令如下:

$ ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
创建用户信息
 添加用户组:$ groupadd sftp

添加用户:$ useradd -g sftp -s /sbin/nologin -M userrenwolecom

参数注解:-g              # 加入用户组
-s              # 指定用户登入后所使用的 shell
/sbin/nologin   # 用户不允许登录
-M              # 不要自动建立用户的登入目录

设置用户密码:$ passwd userrenwolecom
创建用户目录并设置权限
 创建 sftp 主目录:$ mkdir /data/sftp

设置 sftp 主目录权限:$ chown root:sftp /data/sftp

文件夹所有者必须是 root,用户组可以不是 root。$ chmod 744 /data/sftp

权限不能超过 755 但不包括 755,否则会导致登录报错。
创建上传目录并设置权限

在 /data/sftp/ 主目录下创建 uploads 资料夹,并设置所有者是:userrenwolecom,用户组隶属:sftp,这样新增的帐号才能有上传编辑的权限。

$ mkdir -p /data/sftp/uploads
$ chown userrenwolecom:sftp /data/sftp/uploads
修改 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
测试是否能够登录、上传、下载等操作

在 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 均是如此,后来我将用户修改成组后就正常了,具体原因尚未可知,不过修改为组效果是一样的。如果你知道什么原因还请指教。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-09-20发表,共计2600字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中