云计算百科
云计算领域专业知识百科平台

【工具】Linux如何实现一台服务器ssh免密登录另外一台服务器

在 Linux 系统中,可以通过配置 SSH 免密登录来实现直接登录远程服务器而无需输入密码。以下是具体步骤:


1. 生成 SSH 密钥对

如果你还没有 SSH 密钥对,需要先生成一个。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  • -t rsa:指定密钥类型为 RSA。
  • -b 4096:指定密钥长度为 4096 位(更安全)。
  • -C "your_email@example.com":添加注释,通常可以写你的邮箱。

执行后会提示你保存密钥的路径,默认是 ~/.ssh/id_rsa,直接按回车即可。

接着会提示你设置密钥的密码(passphrase),如果希望完全免密登录,直接按回车跳过。


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

使用 ssh-copy-id 命令将本地生成的公钥复制到远程服务器。

ssh-copy-id app@10.12.11.1

  • 这个命令会将本地的公钥(默认是 ~/.ssh/id_rsa.pub)追加到远程服务器用户 app 的 ~/.ssh/authorized_keys 文件中。
  • 如果是第一次连接远程服务器,可能会提示你确认主机的指纹信息,输入 yes 继续。

注意:如果 ssh-copy-id 命令不可用,可以手动完成以下操作:

  • 查看本地公钥内容:

    cat ~/.ssh/id_rsa.pub

  • 登录到远程服务器:

    ssh app@10.12.11.1

  • 在远程服务器上创建 .ssh 目录(如果不存在)并设置权限:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh

  • 将本地公钥内容追加到 ~/.ssh/authorized_keys 文件中:

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

  • 设置 authorized_keys 文件的权限:

    chmod 600 ~/.ssh/authorized_keys


  • 3. 测试免密登录

    完成上述步骤后,尝试重新连接远程服务器:

    ssh app@10.12.11.1

    如果配置正确,应该可以直接登录,无需输入密码。


    4. 检查和排查问题

    如果仍然需要输入密码,可能是以下原因导致的:

  • 权限问题:

    • 确保远程服务器上的 .ssh 目录和 authorized_keys 文件权限正确:chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
  • SSH 配置文件:

    • 检查远程服务器的 /etc/ssh/sshd_config 文件,确保以下配置项已启用:PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys
      PasswordAuthentication no
    • 修改后需要重启 SSH 服务:sudo systemctl restart sshd
  • 日志排查:

    • 查看远程服务器的 SSH 日志以获取更多信息:sudo tail -f /var/log/auth.log

  • 通过以上步骤,你应该能够成功实现 SSH 免密登录。如果有其他问题,请随时l联系博主。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【工具】Linux如何实现一台服务器ssh免密登录另外一台服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!