ssh多密钥key登陆配置

生成密钥

ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/id_rsa_4github
ssh-keygen -t rsa -C "gallant@email.com" -f ~/.ssh/id_rsa_4gitlab

生成结果

-rw-------  1 gallant  staff  2610 12 25 12:23 id_rsa_公司1
-rw-r--r--  1 gallant  staff   578 12 25 12:23 id_rsa_公司1.pub
-rw-------  1 gallant  staff  2610 12 25 12:24 id_rsa_公司2
-rw-r--r--  1 gallant  staff   575 12 25 12:24 id_rsa_公司2.pub

公钥配置

将公钥配置到gitlab或者github上,配置方法不再赘述,直接简单的一个gitlab案例的截图吧
1

密钥账户配置

新建config文件,配置如下

# 公司1
Host gitlab.公司1.com
HostName gitlab.公司1.com
PreferredAuthentications publickey
# 密钥(不是公钥)
IdentityFile ~/.ssh/id_rsa_公司1
User gallant@公司1.com
# 公司2
Host git.公司2.com
HostName git.公司2.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_公司2
User gallant@公司2.com

配置完美,开始搞事,结果公司1的认证成功了,但是公司2报错了。。。

ssh -T git.公司2.com
gallant@公司2.com@git.公司2.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

很奇怪,最终发现公司2gitlab的域名虽然是:git.公司2.com,但是实际的git代码ssh地址是非域名(即ip形式的)。于是追加ip的配置至config

# 公司1
Host gitlab.公司1.com
HostName gitlab.公司1.com
PreferredAuthentications publickey
# 密钥(不是公钥)
IdentityFile ~/.ssh/id_rsa_公司1
User gallant@公司1.com
# 公司2
Host git.公司2.com
HostName git.公司2.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_公司2
User gallant@公司2.com

Host 192.168.0.1
HostName 192.168.0.1
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_公司2
User gallant@公司2.com

再次测试认证成功

验证踩坑

域名问题

公司1验证很流畅,看上去很ok,试了下clone代码也正常,但是公司2则不行

ssh -T gitlab.公司1.com
Connection to gitlab.公司1.com closed by remote host.

公司2验证链接报错

ssh -T 192.168.0.1
gallant@公司2.com@192.168.0.1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

二者报错的提示信息不同,但是产生报错的原因是一样,是由于没有增加git前缀,增加git前缀后则正常返回结果

ssh -T git@gitlab.公司1.com
Welcome to GIT, gallant!

报错不同的原因是由于公司1代码ssh地址与gitlab库拥有相同的域名,而公司2则一个使用域名,一个使用ip

公司1域名

2

公司2域名

3

私钥配置问题

私钥配置成公钥报错

Cloning into 'virtual-number'...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/gallant/.ssh/公司2.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/gallant/.ssh/公司2.pub": bad permissions
git@192.168.0.1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

跳板机配置

追加跳板机配置

Host prod
HostName jms-pro.公司2.com
Port 1010
User gallant
IdentityFile ~/.ssh/id_rsa_堡垒机

iTerm链接跳板机

ssh prod

总结

  1. 通过ssh命令验证免密登陆时取得不仅仅是公司git地址的域名,而是git代码源ssh地址的url,例如:git@域名或ip
  2. 一定要配置User信息,例如:gallant@公司1.com
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值