Linux上启用sftp服务并配置免密登录
SFTP(Secure File Transfer Protocol)是一种基于SSH协议的安全文件传输协议,它提供了对数据的加密和认证,并且支持基于文件的访问控制,是一种非常安全可靠的文件传输协议。这个配置将SFTP服务作为OpenSSH服务器的子系统来启用,并且限制只有sftpusers组的用户才能使用SFTP服务。OpenSSH是一个开源的SSH实现,它提供了SSH协议的客户端和服务器端实现
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
再测试下使用密码应该登录不上了,就完成了。
更多推荐
所有评论(0)