ssh-add重启后失效解决方法

前言

忘记了从何时开始,git的ssh秘钥配置每次启动后都会失效,需要重新载入。肯定有办法解决做到一劳永逸,于是有有了这一篇研究的文章。

研究开始

查询手册得知,ssh-add其实是把私钥放到高速缓存中
在这里插入图片描述
每次ssh鉴权的时候只要指定了这个私钥就可以快速验证,既然重启失效,那么肯定这个高速缓存储存介质是内存实锤了。

思路有两个,第一个就是这个私钥反正已经在本地了,能不能有一个方法不需要添加到高速缓存里面。第二个就是既然断电失效,那有没有办法每次开机的时候自动加载一下。那么朝着这两个思路,摸索到了两个解决办法。

注意我的私钥是有密码的,所以我的步骤会一个准备,如果你的私钥没有密码,那么恭喜你,你可以跳过准备。

准备

我的最初思路是开机执行添加ssh-add的命令,但是我的需要输入密码,这就很蛋疼了,我找了很多方式都没有办法让密码自动流入ssh-add中,比如我们经常使用的sudo xxx。后面也要接密码,但是只要不介意让密码明文是有办法合并到一行并且自动执行的。

但是我在ssh-add的手册中看到,ssh-add有一个参数(-K 的参数)可以把密码添加到钥匙串以后只需要ssh-add就可以啦
-K 的参数
于是我们先执行一遍带-K参数的命令:
在这里插入图片描述
然后把私钥放到mac的钥匙串中:
添加后可以在mac的钥匙串中看到
然后我们第二次在使用ssh-add -K xxx添加以后,它就不会需要我们输入密码了(注意,使用的时候也必须带-K,不然默认不会去钥匙串里面取密码,还是提示需要你输入)
第二次输入的时候已经自动从钥匙串取密码了

方法一(使用startup文件)

还记得startup文件吗?点击这里回忆。每开一个终端zsh都会去加载并且执行startup文件,意思就是我们只要在startup文件文件中加入ssh-add -K xxx的命令,那么就不用我们每次去执行,每次都会执行无惧重启。

这里我选的startup是.zshrc,在终端输入vim ~/.zshrc,然后在里面添加ssh-add -K ~/.ssh/oreoft(输入自己私钥的位置)

准备操作.zshrc文件:
准备操作.zshrc文件
添加ssh-add命令:
添加ssh-add命令
记得:wq保存,然后我们打开一个窗口试验一下
在这里插入图片描述
可以看到,我打开一个窗口这个添加成功的信息就出来了,我每次打开窗口都会自动add一下更别说重启啦。最后有强迫症的我,自然是希望无感的,不希望他每次都提示我添加成功。那么我们把换成在这个nohup ssh-add -K ~/.ssh/oreoft >/dev/null 2>&1。就是前后加一下nohup>/dev/null 2>&1。作用是把输出的日志丢到”黑洞”里面

每次开窗口不显示成功日志修改:
每次开窗口不显示成功日志修改

方法二(开机自动执行)推荐

上面的方法比较简单,比较linux风格一点。那么下一个比较mac风格,因为这个私钥在高速缓存中只是重启以后才失效,我们每次打开窗口都重新加载一下,比较冗余并且大家可以看到我打开一个新终端稍微会慢一点,牺牲了一点性能,就为了重启的一次丢失导致每次打开终端都需要add,这不是一个很好地设计。最小性能牺牲应该是开机执行一遍,centos有用/etc/rc.d/rc.local,mac下没有对应的文件,但是它有一个GUI的软件可以供你设置。那就是自动操作。

  1. 我们先cmd+space然后输入自动操作
    在这里插入图片描述
  2. 在弹出来的框框选择新建文稿
    在这里插入图片描述
  3. 在又弹出来的框框里面选择应用程序
    在这里插入图片描述
  4. 然后输入shell,并且选择shell
    在这里插入图片描述
  5. 在里面输入ssh-add -K ~/.ssh/oreoft(注意自己的路径,然后需要带 -K ),然后按右上角的三角形,执行一遍,看是否能通过(如果提示你输入密码,检查命令是否带-K,或者是否已经把密码添加到钥匙串了)
    在这里插入图片描述
  6. 然后cmd+s保存,选择一个地方保存起来
    这是我保存的地方:
    这是我保存的地方
  7. 右上角小苹果-系统偏好设置-用户与群组-登陆项
    如果找不到登录项,可以在设置中搜索登录项
    在这里插入图片描述
  8. 选择小加号,然后把刚刚你设置的脚本添加到这里,这里就类似于win的开机自启项,选择隐藏,这样它每次开机后台启动,对你无感知。
    在这里插入图片描述

后言

最终优雅的解决了这个问题,对于我而言,每次开机都要ssh-add,我是接受不了…因为我很懒,其实整个思路很简单,因为我的私钥是带密码的,所以我使用ssh-add -K的-K参数命令进行添加,然后我mac的app自动操作加上开机自启项来解决每次自动ssh-add -K的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值