在CentOS上启用SFTP公钥认证,可以按照以下步骤进行操作:
首先,确保你的系统上安装了openssh-server
和openssh-clients
。如果没有安装,可以使用以下命令进行安装:
sudo yum install openssh-server openssh-clients
编辑SSH配置文件/etc/ssh/sshd_config
,启用公钥认证并禁用密码认证(可选)。
sudo vi /etc/ssh/sshd_config
在文件中找到以下行并进行修改:
PubkeyAuthentication yes
PasswordAuthentication no # 如果你希望完全禁用密码认证
保存并退出编辑器。
确保你有一个用户账户,并且该用户的家目录存在。如果没有,可以使用以下命令创建:
sudo useradd -m your_username
sudo passwd your_username
在客户端机器上生成SSH密钥对(如果还没有)。使用以下命令:
ssh-keygen -t rsa -b 4096
按照提示操作,生成密钥对。默认情况下,密钥会存储在~/.ssh/id_rsa
和~/.ssh/id_rsa.pub
。
将客户端的公钥复制到服务器用户的~/.ssh/authorized_keys
文件中。可以使用以下命令:
ssh-copy-id your_username@your_server_ip
系统会提示你输入服务器用户的密码。成功后,公钥会被添加到服务器的authorized_keys
文件中。
为了使配置生效,需要重启SSH服务:
sudo systemctl restart sshd
现在,你可以尝试使用SFTP连接到服务器,验证公钥认证是否成功:
sftp your_username@your_server_ip
如果一切配置正确,你应该能够无需密码直接登录。
确保防火墙允许SSH连接。如果使用的是firewalld
,可以添加以下规则:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
如果使用的是iptables
,可以添加以下规则:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
完成以上步骤后,你的CentOS系统应该已经成功启用了SFTP公钥认证。