在CentOS系统中使用SSH公钥认证可以提供更安全的远程登录方式。以下是设置SSH公钥认证的步骤:
首先,你需要在本地机器上生成一个SSH密钥对(如果还没有的话)。打开终端并运行以下命令:
ssh-keygen -t rsa -b 4096
按照提示操作,通常会生成两个文件:
~/.ssh/id_rsa
:私钥~/.ssh/id_rsa.pub
:公钥你可以选择为私钥设置密码短语(passphrase),以增加安全性。
接下来,你需要将生成的公钥复制到远程CentOS服务器的~/.ssh/authorized_keys
文件中。你可以使用ssh-copy-id
命令来完成这一操作:
ssh-copy-id user@remote_host
其中,user
是远程服务器上的用户名,remote_host
是远程服务器的IP地址或主机名。
如果ssh-copy-id
命令不可用,你可以手动复制公钥:
在本地机器上打开公钥文件:
cat ~/.ssh/id_rsa.pub
登录到远程服务器:
ssh user@remote_host
在远程服务器上创建.ssh
目录(如果它不存在)并设置正确的权限:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
将公钥内容追加到~/.ssh/authorized_keys
文件中:
echo "your_public_key" >> ~/.ssh/authorized_keys
其中,your_public_key
是你之前复制的公钥内容。
设置authorized_keys
文件的权限:
chmod 600 ~/.ssh/authorized_keys
确保远程服务器的SSH配置允许公钥认证。编辑远程服务器上的/etc/ssh/sshd_config
文件:
sudo vi /etc/ssh/sshd_config
找到并确保以下配置项被正确设置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
保存并退出编辑器,然后重启SSH服务以应用更改:
sudo systemctl restart sshd
现在,你应该能够使用SSH公钥认证登录到远程服务器:
ssh user@remote_host
如果一切设置正确,你应该能够无需输入密码即可登录。
为了进一步提高安全性,你可以禁用密码认证。编辑/etc/ssh/sshd_config
文件并确保以下配置项被设置为no
:
PasswordAuthentication no
然后重启SSH服务:
sudo systemctl restart sshd
这样,只有使用公钥认证的用户才能登录到远程服务器。
通过以上步骤,你就可以在CentOS系统中成功设置和使用SSH公钥认证了。