Linux——配置服务器间的免密登录
前言
我们在linux服务器上操作时,难免会遇到ssh跳转到其他服务器去操作命令的场景,每次访问时都需要我们手动输入一遍密码,这样虽然更为安全,但是在执行服务器数量较多的批量操作时,这种安全认证会十分繁琐。实际上,Linux中提供了对应的命令来帮助我们开通服务器间的免密登录,本篇文章将对具体的步骤进行讲解,希望对各位读者有所帮助。
步骤一:使用ssh-keygen
命令生成本地的公钥和私钥
ssh-keygen
命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。SSH 密钥默认保留在 ~/.ssh
目录中。如果没有 ~/.ssh 目录,ssh-keygen命令会使用正确的权限创建一个。
ssh-keygen -t rsa
ssh-keygen的命令可选项
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。
执行完命令后,会有几个选项给你选择,一般来说直接回车,使用默认配置即可。需要注意的是,如果本身服务器已经生成过ssh秘钥了,这一步可以省略
想知道秘钥曾经生成过,可以看步骤二。
步骤二:查看秘钥是否生成成功
ll ~/.ssh/
正常来说,如果ssh-keygen
命令执行成功,我们可以在目录中看到有id_rsa
(存放私钥)和id_rsa.pub
(存放公钥)两个文件

步骤三:使用ssh-copy-id
命令将公钥复制到其他服务器中
先简单介绍一下ssh-copy-id
命令
ssh-copy-id
命令可以把本地主机的公钥复制到远程主机的 authorized_keys
文件上。authorized_keys 文件用来验证 client 。使用 ssh-copy-id 命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。如果不传入 -i 参数,ssh-copy-id
使用默认 ~/.ssh/identity.pub 作为默认公钥。如果多次运行 ssh-copy-id ,该命令不会检查重复,会在远程主机中多次写入 authorized_keys 。
注意,本地 ~/.ssh/id_rsa
的权限,chmod 400 ~/.ssh/id_rsa ,该文件包含用于授权的私钥,如果该文件可以被其他用户访问,ssh 会忽略该私钥。
ssh-copy-id [ -i [identity_file] ] [user@]machine
- -i 指定公钥文件
ssh-copy-id -i ~/.ssh/id_rsa.pub 想要免密登录的IP地址
执行完上述命令后,我们后续就可以免密登录其他服务器了。
可参考的批量赋权脚本
如果需要配置免密登录的服务器比较多,我们可以通过脚本来解决这些重复性的动作。
#!/bin/bash
# host填写实际想要免密登录的ip
host=(1.1.1.1 1.1.1.2)
ssh-keygen -t rsa
#迭代操作
for i in ${!host[@]}
do
ssh-copy-id -i ~/.ssh/id_rsa.pub ${host[$i]}
done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)