使用脚本来开机自动添加sshKey

前言

这算是我个人的第一篇博客吧,仅用于记录个人开发与生活中的一些事情和心得,如果在你看到的时候,能够对你产生一点帮助或者启发的话,那就更值得慰藉了。刚开始写博客,可能内容算不得好、排版存在一些问题,请谅解。

需求产生的背景

由于我自己git的sshKey每次开机后都要重新添加,为了减少这个简单且无脑的重复工作,就采用了编写脚本来实现这个功能。

具体实现

首先就是写一个脚本,在你自己的期望路径建立一个脚本,写入以下代码:


#!/bin/sh   #声明脚本语言类型

cd ~     #进入根目录

ssh-add -l    #查看当前sshKey的列表,可以省略,

ssh-add -D    #添加前先清空列表

ssh-add ~/.ssh/id_gitlab    #添加你自己的sshKey,有多个sshKey就分别加

ssh-add ~/.ssh/id_github    #同上面的意思

可以说,通过这几行命令,我的每次重复添加sshKey的需求就完成了。但是只是这样的话,还是存在两个问题。

难道我每次重启完电脑都要手动执行一次这个命令?那我写一个脚本的作用岂不是大打折扣了?

我添加sshKey都是写死的,难道我之后每次新加一个账户,就要重新添加一个sshKey?那岂不是相当不方便且不优雅?(该问题不影响到使用,如果不介意之后再次添加或者不需要再次添加git账户,也可以忽略)

由此,我又添加了以下两个操作:

1. 开机自启脚本

首先,修改脚本的权限,在你脚本的路径下,终端运行以下命令。( 将xx改成你自己的脚本名称)


chmod 777 xx.sh

需要在脚本文件的简介中,将打开方式设置为终端,并且将共享与权限全部修改至读与写。

修改打开方式和权限

然后点开设置->用户和群组->点击登录项->将你的脚本加入进去。

添加登录项

经过这些步骤,就可以实现开机执行脚本了。

2. “优雅”的添加sshKey

想要优雅的添加sshKey的前提就是你要优雅的命名你的sshKey的名字…

假设以下的文件就是我的sshKey文件夹,通过以下代码遍历文件夹内文件名。


cd ~/.ssh

path=$1

files=$(ls $path)

for fileName in $files; do

echo $fileName

done

其中$fileName就是文件名,此时我们需要筛选一下,我这边命名是所有sshKey都带有id_,所以可以获取所有包含id_并且不包含.pub的文件名。然后将其添加至ssh列表中,如下:


#!/bin/sh

cd ~/.ssh

ssh-add -l

ssh-add -D

strA="id_"

strB=".pub"

path=$1

files=$(ls $path)

for fileName in $files; do     # 遍历文件名

resultA=$(echo $fileName | grep "${strA}")     # 两个判断条件

resultB=$(echo $fileName | grep "${strB}")

if [[ "$resultA" != "" ]] && [[ "$resultB" == "" ]]

then

ssh-add ~/.ssh/$fileName    # 添加sshKey

fi

done

至此,所有的功能都已经完成了,再也不用操心git上传没有权限了~
其实很多操作都可以使用脚本来完成,可以避免很多重复的操作,节省很多时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。