操作
1、生成私钥文件
ssh-keygen -t rsa -f id_pem_system
ssh-keygen -p -m pem -f ./id_pem_system

2、加入authorized_keys文件
cat id_pem_system.pub >> authorized_keys
配置a机器免密登录b机器
1、获取b机器私钥
2、登录a机器,并且上传b机器私钥到以下目录
cd ~/.ssh/
3、设置密钥权限,必须设置600,否则拒绝连接。
chmod 600 ~/.ssh/id_rsa_root_2
4、配置a机器免密登录,并且使用指定账户、指定ip的私钥文件。
vi ~/.ssh/config
# 在a机器中 ~/.ssh/config 中添加
host 192.168.10.2
hostname 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
identitiesonly yes
# 多个主机
host root-test1
hostname 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
identitiesonly yes`
host root-test2
hostname 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
identitiesonly yes`
# 连接
ssh root-test1
ssh root-test2
5、通过简化命令就可以连接了
ssh 192.168.10.2
config 命令进阶
# 全局默认配置(所有主机生效)
host *
identitiesonly yes # 所有主机都仅用指定私钥
port 22 # 默认22端口
user root # 默认root用户
serveraliveinterval 60 # 保持连接(每60秒发心跳)
# 主机1:覆盖user和私钥
host 192.168.10.2
hostname 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
# 主机2:覆盖ip、user、私钥、端口
host 192.168.10.3
hostname 192.168.10.3
user admin
identityfile ~/.ssh/id_rsa_admin_3
port 2222 # 覆盖全局默认的22端口
# 主机3:用别名,仅指定差异项
host node4
hostname 192.168.10.4
user ubuntu
identityfile ~/.ssh/id_rsa_ubuntu_4
场景1:同一主机,不同用户 + 不同私钥
# 别名1:以root用户登录192.168.10.2(用root私钥)
host node2-root
hostname 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
identitiesonly yes
# 别名2:以admin用户登录192.168.10.2(用admin私钥)
host node2-admin
hostname 192.168.10.2
user admin
identityfile ~/.ssh/id_rsa_admin_2
identitiesonly yes
# 别名3:简写(直接用ip作为别名,保留root规则)
host 192.168.10.2
hostname 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
identitiesonly yes
场景2:同一主机,不同端口 + 不同私钥
# 别名1:22端口登录192.168.10.2(root用户)
host node2-port22
hostname 192.168.10.2
port 22
user root
identityfile ~/.ssh/id_rsa_root_2
identitiesonly yes
# 别名2:2222端口登录192.168.10.2(admin用户)
host node2-port2222
hostname 192.168.10.2
port 2222
user admin
identityfile ~/.ssh/id_rsa_admin_2
identitiesonly yes
场景3:复用公共配置(减少重复)
# 全局公共配置(所有主机生效)
host *
identitiesonly yes
serveraliveinterval 60 # 保持连接心跳
# 匹配目标主机:192.168.10.2的所有别名(精准复用)
match host node2-* 192.168.10.2
hostname 192.168.10.2 # 统一指定物理主机ip
stricthostkeychecking no # 跳过主机密钥检查(可选)
# 别名1:root用户 + 默认22端口
host node2-root 192.168.10.2
user root
identityfile ~/.ssh/id_rsa_root_2
# 别名2:admin用户 + 22端口
host node2-admin
user admin
identityfile ~/.ssh/id_rsa_admin_2
# 别名3:root用户 + 2222端口(覆盖默认端口)
host node2-root-2222
user root
port 2222
identityfile ~/.ssh/id_rsa_root_2_2222
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论