1. 生成密钥
ssh-keygen -t rsa -C "jaynaruto@qq.com"
//如果只有一对密钥,建议不要修改默认的密钥名称,即一直按回车即可
此命令会在你当前用户的个人目录下(如我当前用户为savokiss,就在/home/savokiss/.ssh,root则为/root)生成一对密钥
默认的名字为id_rsa和id_rsa.pub
2. 复制公钥
复制id_rsa.pub中的内容到你git服务器(gitlab,coding,github)的配置ssh公钥的地方
公钥内容类似:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2czeS+H5+dSOA1F2QyOCF126LE2cfGzCfqll73i+C61o2VrRrQAqeadELSUeUYJRZkoNmBn/4ZMV7A0ZLvIpsMsXTkpQ+dE1rUtN/D01nFEoLPABsVb0KctGOozVWKXme7WTAdzGlW8Lyc6e/oOQZ71GXbthneh8FH/NBiZH2NsbFLePeq/YoO8RLoDK9WusOYotmqLvah99KoB2jm/dZ8G3Q36fXoVAo46NRbp1mdYyjwd7k2XUylQWbeWXpxP7Plr2VPQyrOuCxCaL9dzrZkWFhhoDOlpKppDoeCN6hUiMBz/eoOMw1Wlj+wtbpWPLJqv0rNn2+pO3BrMUcIMpw== jaynaruto@qq.com
注: 如果仅仅需要部署,将以上公钥配置到项目的 deploy key 部分即可
3. 测试连接
以coding为例:
ssh -vT git@git.coding.net
这里的-v是显示详细信息
具体会显示很长的信息提示你连接是否成功,成功的话会有一个successfully!
Hello savokiss You've connected to Coding.net by SSH successfully!
4. linux用户的问题
上面测试成功了,但是我在`/usr/share/nginx/html`中clone repo竟然还是提示我 Permission denied (publickey)
原因:
上面我用的一直都是savokiss用户,具有sudo权限,而我生成密钥的时候没有加sudo,就生成在了`/home/savokiss/.ssh`下面
但是我clone repo的目录是`/usr/share/nginx/html`,都是属于root的,所以我clone的时候只能加上sudo
就是这个sudo造成ssh自动去`/root/.ssh`下面查找`id_rsa`私钥!!!
所以我只能用sudo再生成一对密钥了。。o(╯□╰)o
5. done
步骤就这么简单,以前总是遇到问题是因为总是修改它默认的密钥名称,导致ssh在读取默认配置(id_rsa)的时候失败
简单来讲不要改它默认的名字就好!
当然如果你有多个密钥要管理,可以改,然后参考下面的文章:
refer: