centos

centos ssh如何使用公钥认证

小樊
59
2025-05-10 19:06:12
栏目: 智能运维

在CentOS系统中使用SSH公钥认证可以提供更安全的远程登录方式。以下是设置SSH公钥认证的步骤:

1. 生成SSH密钥对

首先,你需要在本地机器上生成一个SSH密钥对(如果还没有的话)。打开终端并运行以下命令:

ssh-keygen -t rsa -b 4096

按照提示操作,通常会生成两个文件:

你可以选择为私钥设置密码短语(passphrase),以增加安全性。

2. 将公钥复制到远程服务器

接下来,你需要将生成的公钥复制到远程CentOS服务器的~/.ssh/authorized_keys文件中。你可以使用ssh-copy-id命令来完成这一操作:

ssh-copy-id user@remote_host

其中,user是远程服务器上的用户名,remote_host是远程服务器的IP地址或主机名。

如果ssh-copy-id命令不可用,你可以手动复制公钥:

  1. 在本地机器上打开公钥文件:

    cat ~/.ssh/id_rsa.pub
    
  2. 登录到远程服务器:

    ssh user@remote_host
    
  3. 在远程服务器上创建.ssh目录(如果它不存在)并设置正确的权限:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
  4. 将公钥内容追加到~/.ssh/authorized_keys文件中:

    echo "your_public_key" >> ~/.ssh/authorized_keys
    

    其中,your_public_key是你之前复制的公钥内容。

  5. 设置authorized_keys文件的权限:

    chmod 600 ~/.ssh/authorized_keys
    

3. 配置SSH服务器

确保远程服务器的SSH配置允许公钥认证。编辑远程服务器上的/etc/ssh/sshd_config文件:

sudo vi /etc/ssh/sshd_config

找到并确保以下配置项被正确设置:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存并退出编辑器,然后重启SSH服务以应用更改:

sudo systemctl restart sshd

4. 测试SSH公钥认证

现在,你应该能够使用SSH公钥认证登录到远程服务器:

ssh user@remote_host

如果一切设置正确,你应该能够无需输入密码即可登录。

5. 禁用密码认证(可选)

为了进一步提高安全性,你可以禁用密码认证。编辑/etc/ssh/sshd_config文件并确保以下配置项被设置为no

PasswordAuthentication no

然后重启SSH服务:

sudo systemctl restart sshd

这样,只有使用公钥认证的用户才能登录到远程服务器。

通过以上步骤,你就可以在CentOS系统中成功设置和使用SSH公钥认证了。

0
看了该问题的人还看了