SFTP

SFTP(Secure File Transfer Protocol)是一种基于SSH协议的安全文件传输协议,它提供了对数据的加密和认证,并且支持基于文件的访问控制,是一种非常安全可靠的文件传输协议。SFTP并非Linux服务器自带的,但是大部分Linux发行版都可以通过安装OpenSSH软件包来支持SFTP服务。

OpenSSH是一个开源的SSH实现,它提供了SSH协议的客户端和服务器端实现,同时也包含了SFTP服务的实现。在大部分Linux发行版中,OpenSSH通常都是默认安装的,因此可以通过简单的配置来启用SFTP服务。

启用sftp

要启用SFTP服务,需要在OpenSSH服务器的配置文件/etc/ssh/sshd_config中添加以下配置:

Subsystem sftp internal-sftp
Match group sftpusers
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

这个配置将SFTP服务作为OpenSSH服务器的子系统来启用,并且限制只有sftpusers组的用户才能使用SFTP服务。此外,还限制了X11转发和TCP转发,以提高安全性。ChrootDirectory指定了SFTP用户的根目录,这样用户登录后只能访问自己的家目录,而无法访问系统的其他目录。

由于sftp是基于SSH协议的,使用的端口号和SSH是一样的。

  • 创建sftp用户
# 创建sftpusers用户组
$ groupadd sftpusers
# 创建用户并添加到sftpusers组
$ useradd -g sftpusers -s /bin/false sftp_test
# 输入密码
$ passwd sftp_test
# 或者使用免交互式命令输入密码
$ echo "$password" | passwd --stdin sftpusers

# 创建用户家目录
$ mkdir -p /home/sftpusers/sftp_test /home/sftpusers/sftp_test/upload
# 修改用户的主目录
$ usermod -d /home/sftpusers/sftp_test sftp_test
# 修改用户目录权限
$ chown root.sftp /home/sftpusers/sftp_test
$ chown -R  sftp_test.sftpusers upload

# 登录测试
$ sftp -P 22 sftp_test@192.168.x.x 

至此启用sftp完成。

  • 通过root用户登录使用

如果是自己用的云服务器,知道账号密码的情况下,可以直接使用root账号登录使用:

sftp -P 22 root@192.168.x.x 

配置SSH免密登录(使用密钥登录)

  • 生成ssh密钥

使用命令: ssh-keygen -t rsa,会生成公钥和私钥,分别存放在:/.ssh/id_rsa.pub和/.ssh/id_rsa。

  • 添加公钥(id_rsa.pub)到授权文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 使用私钥(id_rsa)登录

下载私钥到本地,使用xshell、putty等ssh客户端,配置使用私钥登录,测试能否登录成功。

  • 取消密码登录权限

登录成功后,再配置取消密码登录权限

sed -i '/PasswordAuthentication/ s/yes/no/' /etc/ssh/sshd_config

sed -i '/ChallengeResponseAuthentication/ s/yes/no/' /etc/ssh/sshd_config

再测试下使用密码应该登录不上了,就完成了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐