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 免密登录,提高远程服务器管理的效率。