【Git】配置SSH密钥实现Git操作免密

背景

在使用Git推送代码的时候,会默认需要输入密码。如果经常推送代码,那就需要经常输入密码,比较繁琐。所以Git也提供了免密登录的功能。

Git本身支持两种协议对远程Git仓库进行访问:HTTPS、SSH。两种方式有一定的区别,不过区别不是本博客的重点,就不过多介绍。本文重点介绍通过SSH协议对远程仓库进行访问时,如何配置免密登录

配置免密

生成RSA密钥

打开cmd命令行,输入如下命令生成密钥:

ssh-keygen -t rsa -C "xxx"  # -C后面的内容是注释,可以随便填写

第一使用该命令时,之后会在用户目录下生成.ssh文件夹。其中会有一些文件,包括:id_rsaid_rsa.pub以及其他的文件。id_rsa是私钥,id_rsa.pub是公钥。

将公钥内容上传到Git服务器

将公钥文件中的内容复制,并保存到服务器的~/.ssh/authorized_keys文件中。

配置ssh

现在密钥有了,还需要在本机配置什么时候,用密钥进行免密登录。这里要用到~/.ssh文件夹中的config文件。需要注意,这个文件不是生成的,需要手动创建。创建好后,填写如下信息:

Host 服务器别名
  HostName 服务器主机名(IP)
  User 登录用户名
  IdentityFile ~/.ssh/id_rsa

其中

  • Host服务器别名是指,在使用ssh协议进行通讯的时候,不需要写完整的IP,只需要写别名就可以,比较方便
  • HostName就是服务器实际的IP
  • User是登录的用户名
  • IdentityFile是RSA私钥的路径

这里记录一个我遇到的坑。我之前在SSH的config文件中配置了一次服务器的相关信息。但是之后这个服务器突然搬到另外一个地方去了,IP变了,端口也变了。我之后再使用Git进行推送的时候,因为太久没配置ssh了,忘记了有config这个文件,以为把Git的IP改了就行了。结果死活推送不上去。之后才发现要改SSH的config文件吗,把端口去掉才行。

另外,SSH密钥是全局的,并不局限于在Git中使用。只要计算机通讯用到了SSH协议,都可以使用这个密钥进行免密登录,比如:

  • SSH命令,远程登录到另外一台机器
  • SCP命令,在本机和远程机器之间传输文件
  • Git相关的命令,比如git clone、git push等

你可能感兴趣的:(Git,git,ssh,运维)