SSH 免密登录配置笔记
SSH 免密登录配置笔记
1. 生成 SSH 密钥对
1.1 使用 ssh-keygen 生成密钥对
在本地终端使用以下命令生成 SSH 密钥对:
1 | ssh-keygen -t rsa -b 4096 |
这会在 ~/.ssh/ 目录下生成私钥 id_rsa 和公钥 id_rsa.pub。
1.2 设置密钥存储路径(可选)
如果希望将密钥存储在自定义路径,可以使用 -f 选项:
1 | ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_key |
此命令将私钥保存为 ~/.ssh/my_key,公钥保存为 ~/.ssh/my_key.pub。
1.3 设置密钥密码(可选)
在生成过程中,您可以选择设置密钥的密码。虽然这样可以增加安全性,但每次使用私钥登录时需要输入密码。
2. 上传公钥到远程服务器
2.1 使用 ssh-copy-id 命令(推荐)
最简单的方式是使用 ssh-copy-id 命令将公钥上传至远程服务器:
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host |
这会将本地公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。
2.2 手动复制公钥
如果没有 ssh-copy-id 命令,可以手动将公钥复制到远程服务器:
查看本地公钥内容:
1
cat ~/.ssh/id_rsa.pub
登录到远程服务器:
1
ssh user@remote_host
在远程服务器上创建
.ssh目录(如果不存在):1
mkdir -p ~/.ssh
将公钥内容追加到
authorized_keys文件:1
echo "your_public_key" >> ~/.ssh/authorized_keys
设置正确的权限:
1
2chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3. 配置 SSH 服务端(可选)
3.1 编辑 SSH 配置文件
通过编辑 SSH 配置文件 sshd_config,确保公钥认证和密码认证设置正确:
1 | sudo vi /etc/ssh/sshd_config |
确保以下配置项未被注释且已正确设置:
1 | PubkeyAuthentication yes |
3.2 重启 SSH 服务
修改配置后,重启 SSH 服务以应用更改:
1 | sudo systemctl restart sshd |
4. 测试免密登录
使用以下命令测试是否可以成功通过 SSH 登录远程服务器,而不需要输入密码:
1 | ssh user@remote_host |
如果一切配置正确,您将无需输入密码即可登录。
5. 配置 SSH 客户端(可选)
5.1 编辑 SSH 配置文件
在本地机器上编辑或创建 ~/.ssh/config 文件,配置多个 SSH 登录选项:
1 | vi ~/.ssh/config |
添加以下配置:
1 | Host remote_host_alias |
这样,您可以使用别名 remote_host_alias 登录,而不需要每次输入用户名和主机地址:
1 | ssh remote_host_alias |
6. 注意事项
6.1 私钥安全
确保私钥文件(如 id_rsa)权限设置为 600,并妥善保管私钥,避免泄露。
6.2 公钥分发
可以在多个服务器之间共享公钥,但每台服务器的 ~/.ssh/authorized_keys 文件中应包含相应的公钥。
6.3 密钥管理
若使用多个密钥进行 SSH 登录,可以在 ~/.ssh/config 文件中为不同的主机指定不同的 IdentityFile。