1. 什么是ssh
SSH(Secure Shell)是一种网络协议,可以通过Internet安全地连接到远程计算机或Web服务器。SSH是用来代替telnet和FTP协议,因为它们在网络传输时使用明文密码。SSH在传输过程中使用加密技术,使得攻击者无法窃取登录信息和密码。
2. 在git中使用ssh
在git中使用ssh,需要进行ssh配置。当我们使用ssh来连接到远程仓库时,需要让git知道我们使用了ssh,而不是其他协议。
首先,我们需要在本地生成公钥和私钥。公钥用于远程仓库验证我们的身份,私钥则用于加密传输过程中的数据。
$ ssh-keygen -t rsa -C "your_email@example.com"
执行这个命令后,会要求输入文件名和密码,直接回车使用默认设置即可。这样,生成的公钥和私钥会保存在默认路径下,即在用户根目录的.ssh文件夹下。
2.1 添加公钥到远程仓库
接下来,我们需要将生成的公钥添加到远程仓库的SSH Keys中,以便后续连接时验证身份。这个过程需要在远程仓库的网站上进行。以Github为例,进入用户设置 -> SSH and GPG keys -> New SSH key,然后将公钥的内容复制到文本框中并保存即可。
2.2 修改ssh配置
接下来,我们需要让git知道我们使用了ssh,而不是其他协议。这个过程需要在本地进行。
首先,我们需要将ssh的配置文件放到用户的home目录下。打开终端,执行以下命令:
$ touch ~/.ssh/config
然后,将以下内容添加到配置文件中:
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
User git
这个配置的意思是,当我们访问github.com时,使用我们的私钥作为身份验证。
2.3 测试ssh连接
完成上述配置后,我们需要测试ssh连接是否成功。在终端中执行以下命令:
$ ssh -T git@github.com
如果出现以下输出,则代表ssh连接成功:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
3. 修改ssh
如果我们需要修改ssh,例如更改私钥的密码、更换私钥等操作,需要进行以下步骤。
3.1 更改私钥的密码
如果我们需要更改私钥的密码,需要执行以下命令:
$ ssh-keygen -p
接下来,会提示输入私钥的路径和之前的密码,然后会要求输入新密码两遍。密码更改完成后,私钥文件仍然位于同一位置。
3.2 更换私钥
如果我们需要更换私钥,需要执行以下步骤:
3.2.1 创建新的私钥和公钥
与之前一样,我们需要使用ssh-keygen命令生成新的私钥和公钥。
3.2.2 从远程仓库中删除旧公钥
在更换私钥之前,我们需要从远程仓库中删除旧公钥。这个过程需要在远程仓库的网站上进行。
3.2.3 将新公钥添加到远程仓库中
将新生成的公钥添加到远程仓库的网站上,与之前添加旧公钥的过程相同。
3.2.4 修改ssh配置文件
在本地,我们需要修改ssh配置文件,将新生成的私钥和公钥关联起来。这个过程跟之前添加公钥的过程相同,只需要将config文件中的私钥路径改为新生成的即可。
3.2.5 测试ssh连接
完成以上步骤后,需要测试ssh连接是否成功。
4. 总结
SSH是一种安全协议,可以保证我们使用git交互时的数据传输的安全。在git中使用ssh,需要先在本地生成公钥和私钥,然后将公钥添加到远程仓库中,最后应该修改ssh的配置文件。如果需要更改ssh,可以根据需要执行相应的操作。