现在常用的git代码仓库网站(简称git站)有: gitee、coding、github、gitlab、bitbucket等。
你在git站注册了账号后,可以进入账号设置里面添加ssh-key,从而实现你本地机器免密clone、pull、push你在该git网站的仓库(即项目代码)。
这里有个关键的知识点就是ssh key的工作原理。
假设有两台机器,分别是:
主机A(hostA),ip:198.168.0.1
主机B(hostB),ip:192.168.0.2
如果主机A想通过ssh-key访问主机B,
1、必须先在主机A生成一对ssh-key(包括公钥和私钥);
2、接着把主机A的ssh-key公钥添加到主机B的授权密钥文件里(这步叫做“授权”);
3、主机B对主机A的授权完成后,主机A就可以通过ssh-key免密登录主机B。
要在主机A生成ssh-key密钥对,可以通过ssh-keygen指令(windows机器可以使用git客户端的git-bash.exe)。
#推荐使用ed25519加密算法,比默认的rsa算法更快更安全,生成的密钥串也更短。
#敲下以下指令回车后,第一步会提示生成的私钥文件的默认路径,如有需要可以自行修改路径或文件名。第二第三步是二次确认访问该ssh-key的密码,一般都留空直接回车。
ssh-keygen -t ed25519
三次回车后,可以在当前用户home目录的.ssh文件夹(即~/.ssh/)找到该ssh-key密钥对:id_ed25519 和 id_ed25519.pub。其中带.pub后缀的为公钥,不带.pub后缀的为私钥。这两个文件的内容都是文本,可以编辑和查看。
要完成主机B对主机A的ssh-key授权,有两种方式:
1、在主机A通过ssh-copy-id指令将本机的公钥文本内容写入到主机B的授权密钥文件
# 如果主机B的ssh端口是默认的22端口,也可以省去- p 22。如果是要登录主机B的非root用户,则修改为目标用户的用户名
ssh-copy-id [-p 22] root@192.168.0.2
#输入主机B的登录用户密码后,执行成功则可以在主机B的目标用户home目录的.ssh文件夹(即~/.ssh/)的authorized_file文件看到成功追加了主机A的ssh-key公钥(即id_ed25519.pub)的文本内容。
2、可以跳过ssh-copy-id指令,直接登录主机B的目标用户,编辑当前用户的授权密钥文件(即~/.ssh/authorized_file,没有该文件则需用touch指令先创建该文件),把主机A的ssh-key公钥(即id_ed25519.pub)的文本内容追加进来。
这样子,就可以在主机A执行ssh指令通过ssh-key免密登录到主机B。