mac坏了重装了下系统,然后各种环境都要重新配简直要哭...吸取教训,把环境配置等需要注意的相关东东记录在这里...
我们在日常工作中会遇到公司有个git,还有些自己的一些项目放在github上。这样就导致我们要配置不同的ssh-key对应不同的环境。下面我们来看看具体的操作:
1,生成一个公司用的SSH-Key
$ ssh-keygen -t rsa -C "youremail@yourcompany.com” -f ~/.ssh/id_rsa
在~/.ssh/目录会生成id-rsa和id-rsa.pub私钥和公钥。 我们将id-rsa.pub中的内容粘帖到公司gitlab服务器的SSH-key的配置中。
2,生成一个github用的SSH-Key
$ ssh-keygen -t rsa -C "youremail@your.com” -f ~/.ssh/github_id_rsa
在~/.ssh/目录会生成github-rsa和github-rsa.pub私钥和公钥。 我们将github_id_rsa.pub中的内容粘帖到github服务器的SSH-key的配置中。
3,添加私钥
$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/github_id_rsa
如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令:
$ ssh-agent bash
然后再运行ssh-add命令。
可以通过 ssh-add -l 来确私钥列表$ ssh-add -l# 可以通过 ssh-add -D 来清空私钥列表$ ssh-add -D
4,修改配置文件
在 ~/.ssh 目录下新建一个config文件
touch config
添加内容:
companyHost <your company host> HostName <
your company host>
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa# githubHost github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa
5,测试
**$ ssh -T git@github.com
**
输出
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
就表示成功的连上github了.也可以试试链接公司的git.
SSH第二篇 - 如何设置ssh客户端的配置文件
from https://www.mtyun.com/library/how-to-use-ssh-client-connection-config-file
SSH是远程登录Linux主机的最流行工具之一,SSH客户端提供的功能十分强大,具有很多连接配置选项。
如果每次登录都要重复设定一些复杂的连接参数,这很容易导致出错并且降低效率,幸运地是,我们可以通过设定ssh客户端的连接配置文件来简化登录过程中繁琐的参数设定。 本篇教程就是简要讲述ssh客户端解析配置文件的过程以及一些范例。
配置文件
ssh客户端的配置文件位于~/.ssh目录下,配置文件名统一为config; 检查该配置文件是否存在,如果不存在,则创建该文件:
touch ~/.ssh/config
配置文件范例
配置文件的内容格式范例如下:
Host root-upgrade
User root
Host test-upgrade
User test
Host *-upgrade
Port 8822
HostName 192.168.22.103
IdentifyFile ~/id_rsa_upgrade
Host *
Port 7722
IdentifyFile ~/id_rsa_common
从配置文件中可以看出,配置文件的参数是按照Host块来组织的; 每一个Host块的首部都有一条匹配规则(也就是Host名字),该匹配规则支持通配符; 如果匹配成功了,ssh连接时就会使用已经匹配成功的Host块配置选项。 进行ssh登录时只要指定Host名字(ssh host-name), ssh客户端就会使用host-name去~/.ssh/config配置文件中寻找配置信息。
Host关键字和配置参数项的名字大小写是不敏感的。
配置文件的解析过程
SSH客户端对config配置文件的解析过程是按照Host块自上而下进行的, 如果遇到重复设置的配置参数,而该参数并不能设定多个值,则只选取第一个来使用。 参考配置文件范例中的例子,如果在命令行中执行如下命令:
ssh test-upgrade
那么客户端会找到~/.ssh/config配置文件进行自上而下的解析:
对Host root-upgrade进行匹配,匹配失败;
对Host test-upgrade进行匹配,匹配成功,那么使用该Host块的参数作为连接参数, 也就是登录的用户为test;
对Host *-upgrade进行匹配,匹配成功,那么登录的端口为8822,登录主机为192.168.22.103, 认证的私钥文件加上/id_rsa_upgrade(私钥文件在连接时可以设定多个,/.ssh/id_rsa下的私钥文件是在开始解析时就默认加入到认证的私钥文件中);
对Host *进行匹配,匹配成功;虽然该Host块设定使用7722设定连接端口,但是之前Port参数就已经设定该值为8822, 所以忽略该参数,并将~/id_rsa_common加入到进行认证的私钥文件中;
~/.ssh/config解析完毕。
解析完毕之后,ssh test-upgrade命令等同于以下命令:
ssh test@192.168.22.103 -p 8822 -i ~/.ssh/id_rsa -i ~/id_rsa_upgrade -i ~/id_rsa_common