如何在Linux上配置SSH密钥认证

薄荷微凉 2022-07-26 ⋅ 17 阅读

在Linux系统中,SSH(Secure Shell)是一种通过加密保护网络连接的协议,可以在远程安全访问Linux系统。而SSH密钥认证是一种更安全、更方便的进行远程连接的方式,当配置好SSH密钥认证后,你可以通过密钥对(公钥和私钥)无需输入密码即可登录到远程Linux服务器。

生成SSH密钥对

首先,在本地机器上生成一对SSH密钥,其中包括一个公钥和一个私钥。

  1. 打开终端窗口,执行以下命令生成SSH密钥对:

    ssh-keygen -t rsa -b 4096
    

    这将在默认路径(~/.ssh/id_rsa)下生成一对RSA密钥。你也可以指定其他路径和密钥类型,根据自己的需求进行调整。

  2. 在生成密钥的过程中,你可以选择是否设置一个密码(也称为"passphrase")。密码可以提高密钥的安全性,但每次使用密钥时都需要输入该密码。如果你不希望输入密码,可以直接按Enter跳过密码设置。

  3. 完成后,你将在指定路径下看到生成的公钥(id_rsa.pub)和私钥(id_rsa)。

    ~/.ssh/id_rsa.pub  # 公钥
    ~/.ssh/id_rsa      # 私钥
    

配置远程服务器

现在将你生成的公钥添加到远程Linux服务器上,以便建立受信任的连接。

  1. 在本地机器上运行以下命令,将生成的公钥复制到剪贴板:

    cat ~/.ssh/id_rsa.pub | pbcopy
    

    如果你使用的不是Mac系统,可以尝试将pbcopy替换为适合你系统的命令,如xclip

  2. 使用SSH连接到远程服务器,并将公钥添加到~/.ssh/authorized_keys文件中:

    ssh username@remote_server
    
  3. 如果在远程服务器上没有.ssh目录,请先创建:

    mkdir -p ~/.ssh
    
  4. 将公钥粘贴到~/.ssh/authorized_keys文件中:

    echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
    

    确保将其中的“粘贴你的公钥内容”替换为你实际复制的公钥内容。

  5. 为了确保SSH密钥认证可以正常工作,需要设置一些文件和目录的权限:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

配置本地机器

最后,在本地机器上配置SSH客户端以使用SSH密钥认证。

  1. 通过编辑~/.ssh/config文件,在其中添加以下内容:

    Host remote_server
          Hostname IP地址/域名    # 远程服务器的IP地址或域名
          User username          # 登录远程服务器时的用户名
          IdentityFile ~/.ssh/id_rsa     # 私钥路径
    

    确保将其中的"remote_server"、"IP地址/域名"、"username"和"~/.ssh/id_rsa"替换为实际的值。

  2. 保存并关闭~/.ssh/config文件。

测试SSH密钥认证

现在,你可以通过SSH密钥认证连接到远程服务器,无需输入密码。

  1. 打开终端窗口,输入以下命令连接到远程服务器:

    ssh remote_server
    

    注意,这里的"remote_server"与之前在~/.ssh/config文件中定义的主机名保持一致。

  2. 如果一切设置正确,你将成功地通过SSH密钥认证登录到远程服务器。

通过配置SSH密钥认证,你可以更加安全地进行远程连接,并且大大简化了登录的流程。希望本篇博客对你在Linux上配置SSH密钥认证有所帮助!


全部评论: 0

    我有话说: