SSH配置免密登录

405 阅读3分钟

SSH配置免密登录

SSH 免密登录是通过 SSH 密钥对实现的一种身份验证方式,可以让你在不输入密码的情况下登录远程服务器。以下是实现 SSH 免密登录的详细步骤:

1. 生成 SSH 密钥对

  • 在本地机器上生成 SSH 密钥对(公钥和私钥)。
  • 打开终端,运行以下命令:
ssh-keygen -t ed25519 -C "your_email@example.com"
# 如果你使用的是不支持 ed25519 的旧系统,可以使用以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
#your_email@example.com 替换为你的邮箱地址。

按提示选择保存密钥的文件路径(默认按回车即可)。
设置一个密码(可选,按回车跳过)。

2. 将公钥上传到远程服务器

将生成的公钥上传到远程服务器的 ~/.ssh/authorized_keys 文件中。
使用以下命令将公钥复制到远程服务器:

复制
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote_host

如果你使用的是 RSA 密钥,替换为:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
  • user 替换为远程服务器的用户名。
  • remote_host 替换为远程服务器的 IP 地址或域名。
  • 输入远程服务器的密码,完成公钥上传。

3. 验证免密登录

尝试通过 SSH 登录远程服务器:

ssh user@remote_host

如果配置正确,你将无需输入密码即可登录。

4. 手动配置公钥(可选)

如果 ssh-copy-id 不可用,可以手动将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。
将本地公钥内容复制到剪贴板:

cat ~/.ssh/id_ed25519.pub

或者使用以下命令直接复制:

cat ~/.ssh/id_ed25519.pub | pbcopy  # macOS
cat ~/.ssh/id_ed25519.pub | clip    # Windows

登录远程服务器:

ssh user@remote_host

在远程服务器上,将公钥添加到 ~/.ssh/authorized_keys 文件中:

mkdir -p ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

5. 配置 SSH 客户端(可选)

如果你有多个远程服务器,可以通过 SSH 配置文件简化登录。
编辑本地的 SSH 配置文件:

nano ~/.ssh/config

添加以下内容:

Host myserver
    HostName remote_host
    User user
    IdentityFile ~/.ssh/id_ed25519
  • myserver:自定义的服务器别名。
  • remote_host:远程服务器的 IP 地址或域名。
  • user:远程服务器的用户名。
  • IdentityFile:指定私钥文件路径。
  • 保存并退出编辑器。
  • 现在可以通过别名登录远程服务器:
ssh myserver

6. 总结

  • 生成密钥对:使用 ssh-keygen 生成 SSH 密钥对。
  • 上传公钥:使用 ssh-copy-id 或手动将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。
  • 验证登录:通过 SSH 登录远程服务器,确保无需输入密码。
  • 简化登录:通过 SSH 配置文件简化多服务器管理。
  • 通过以上步骤,可以轻松实现 SSH 免密登录,提高远程服务器管理的效率。