当前位置: 首页 > 工具软件 > git-fs > 使用案例 >

Git-shh配置

黄景胜
2023-12-01

SSH之于Git的原理

  • Git提交时有Https和SSH两种验证方式,Https的方式需要帐号和密码比较好理解,不过它需要在每次提交时输入帐号和密码,有点麻烦;而SSH的功能可以粗暴的理解为记住帐号密码,不过对这个过程有人会有点疑惑。首先,我们用SSH命令生成一个公钥-私钥对,我们会把公钥添加到Git的服务器,把私钥放在本地。提交文件的时候Git服务器会用公钥和客户端提交私钥做验证(具体细节不究),如果验证通过则提交成功,那么我们在把公钥添加到服务器的时候肯定是需要登录Git服务器的,这个过程其实可以理解为帐号和密码托管给SSH了,所以也是相当于输入了帐号密码,但是由SSH帮你记住了。这么理解是可以,但是SSH的意义不仅仅是这样,关于SSH的更详细内容看客可以自行再了解。

生成SSH-KEY

  • 打开命令行、终端,用命令进入到你要保存SSH-KEY文件的文件夹,我们先用命令测试下终端是否支持SSH:
    ssh -V
  • 如果你的终端支持SSH,那么你可能看到类似如下的版本信息:
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
  • 生成秘钥
    ssh-keygen -t rsa -C "qilim@qq.com"
  • 案例:
[root@localhost ~]# ssh-keygen -t rsa -C "xxxxx@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/myssh/id_rsa_github
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/myssh/id_rsa_github.
Your public key has been saved in /root/myssh/id_rsa_github.pub.
The key fingerprint is:
SHA256:rvD7QF1atcJjMUVjjP+48Hk2fS3MnRLjQV+8vQQS8Wo xxxxx@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|          o*B    |
|         ..*oo   |
|          B.o. . |
|       . = +oo  o|
|      . S  Eooo +|
|     . .  o .+.+.|
|    . . .  o.==o+|
|     o o    +oBo=|
|      +o.    o.o.|
+----[SHA256]-----+

单个Git帐号的配置——全局Git配置

  • sh-keygen命令生成SSH-KEY密钥对文件时需要输入文件名称[默认:id_rsa]

  • SSH-KEY生成了,你会在你指定的文件夹会看到两个文件

[root@localhost myssh]# ls
id_rsa_github  id_rsa_github.pub
给服务器和客户端配置SSH-KEY
  • 一步把id_rsa.pub中的公钥内容添加到Git的SSH中,如果你使用Github或者Gitlib,在个人设置中会找到
  • 把私钥文件拷贝到~/.ssh文件夹下
    cp id_rsa ~/.ssh/
  • 把.ssh文件夹下的私钥文件添加到SSH-Agent
    ssh-add id_rsa文件的路径
[root@localhost myssh]# ssh-add id_rsa_github
Identity added: id_rsa_github (id_rsa_github)
[root@localhost myssh]# ssh-add -l
2048 SHA256:rvD7QF1atcJjMUVjjP+48Hk2fS3MnRLjQV+8vQQS8Wo id_rsa_github (RSA)
  • 备注:ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add
参数作用
-D删除ssh-agent中的所有密钥.
-d从ssh-agent中的删除密钥
-e pkcs11删除PKCS#11共享库pkcs1提供的钥匙。
-s pkcs11添加PKCS#11共享库pkcs1提供的钥匙。
-L显示ssh-agent中的公钥
-l显示ssh-agent中的密钥
-L显示ssh-agent中的公钥
-t life对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
-X对ssh-agent进行解锁
-x对ssh-agent进行加锁
  • 此时添加时如果遇到错误,请参考:添加SSH到SSH-Agent时报错。
  • 最后,执行以下命名配置Git全局用户和邮箱
git config --global user.name "xxxxx"
git config --global user.email "xxxxx@qq.com"

多个Git帐号的配置——局部Git配置

  • 多人同时使用多个Git帐号,比如Github、OSChina、Gitlib等,再接着上面讲配置多个Git帐号
  • SSH-KEY生成了,接着给服务器和客户端配置SSH-KEY。
  • 第一步把id_rsa_github.pub中的公钥内容添加到Git的SSH中,如果你使用Github或者Gitlib,在个人设置中会找到。
  • 第二步为SSH配置私钥位置,这里和上面配置单个Git帐号不一样,不过单个帐号也可以按照多个帐号的配置方法来配置。
  • 在.ssh文件夹新建一个名为config的文件,用它来配置多个SSH-KEY的管理。
Host github.com
    HostName github.com
    User xxxxx@qq.com
    PreferredAuthentications publickey
    IdentityFile /root/.ssh/github/id_rsa_github
Host gitee.com
    HostName gitee.com
    User qilim@qq.com
    PreferredAuthentications publickey
    IdentityFile /root/.ssh/gitee/id_rsa

测试

  • 配置全部结束,测试一下配置是否成功:
  • 如果你是Github:
    ssh -T git@github.com
  • 如果是你Gitlib:
    ssh -T git@gitlib.com
  • 如果是你Gitee:
    ssh -T git@gitee.com
  • 如果你是局域网192.168.1.222
    ssh -T git@192.168.1.222
  • 备注:测试不通可以使用-vvv查看详细信息
[root@localhost myssh]# ssh -T git@github.com
Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.

添加SSH到SSH-Agent时报错

  • 如果执行ssh-add …命令提示如下错误:
Could not open a connection to your authentication agent.
  • 那么请执行eval $(ssh-agent)命令后再重试,如果还不行,请再执行ssh-agent bash命令后再执行eval $(ssh-agent)后执行添加命令。另外上述测试配置的命令不能执行时也可以在ssh-agent bash执行完后再测试。参考

 类似资料: