在CentOS系统上设置SFTP公钥认证可以提高安全性并简化用户登录过程。以下是详细的步骤指南:
1. 生成SSH密钥对
首先,你需要在客户端机器上生成SSH密钥对(如果还没有的话)。打开终端并运行以下命令:
ssh-keygen -t rsa -b 4096
按照提示操作,通常会生成两个文件:id_rsa
(私钥)和id_rsa.pub
(公钥)。你可以选择设置一个密码短语来保护私钥。
2. 将公钥复制到服务器
接下来,你需要将生成的公钥复制到CentOS服务器上的目标用户的~/.ssh/authorized_keys
文件中。你可以使用ssh-copy-id
命令来完成这一操作:
ssh-copy-id user@server_ip
其中,user
是你在服务器上的用户名,server_ip
是服务器的IP地址。系统会提示你输入用户的密码。
3. 配置SSH服务器
确保服务器上的SSH配置文件/etc/ssh/sshd_config
允许公钥认证。打开文件并确保以下配置项存在且未被注释:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
如果你希望限制只有SFTP访问权限,可以添加或修改以下配置:
Subsystem sftp /usr/libexec/openssh/sftp-server Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
4. 创建SFTP用户组(可选)
如果你希望限制某些用户只能使用SFTP,可以创建一个专门的用户组并添加相关用户:
sudo groupadd sftpusers sudo usermod -aG sftpusers username
其中,username
是你要添加到SFTP用户组的用户名。
5. 重启SSH服务
完成上述配置后,重启SSH服务以使更改生效:
sudo systemctl restart sshd
6. 测试SFTP连接
现在,你可以尝试从客户端机器连接到服务器并使用SFTP:
sftp username@server_ip
系统会提示你输入密码(如果你设置了密码短语,需要输入)。成功连接后,你应该能够使用SFTP命令进行文件传输。
注意事项
- 确保服务器上的
/etc/ssh/sshd_config
文件的权限正确,通常应该是600
。 - 确保
~/.ssh
目录和~/.ssh/authorized_keys
文件的权限也正确,通常应该是700
和600
。 - 如果你在配置过程中遇到问题,可以查看服务器上的SSH日志文件
/var/log/secure
以获取更多信息。
通过以上步骤,你应该能够在CentOS系统上成功设置SFTP公钥认证。