SSH密钥生成与部署
条评论生成
1 | ssh-keygen -t rsa -C 'youremail@example.com' |
一般默认回车确认就可以了,如果对秘钥保存不放心,那就设置个密码,每次Git客户端使用该秘钥的时候都要求输入密码才行。.pub
是公钥,不带后缀的是私钥,两个文件尤其是私钥自己妥善保存。
部署
秘钥本地生成后上传到服务器也行,如果ssh登录一直出现需要密码,或者复制的密钥总是不对,可能是权限不对,那试试下面的方法,也推荐直接用命令拷贝,不必处理权限和文件名的的问题
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub 'username@githost' -p 'ssh端口' |
测试
使用文本编辑器打开将公钥文件,将里面所有的内容复制【喜欢操作命令直接用clip < ~/.ssh/id_rsa.pub
也行】,添加到Git账号或者项目部署公钥中,然后用以下命令测试:
1 | ssh -Tv 'username@githost' -p 'ssh端口' #测试ssh连接是否成功 |
其中-v
是输出详细的调试信息,其他具体参数可见ssh帮助说明。如果如下显示信息则表示该秘钥部署正确。
1 | Coding 提示: Hello xxx, You've connected to Coding.net via SSH. This is a personal key. |
多账户多秘钥问题
如果是不同平台,如GitHub和coding,那么你就生成一个公钥,分别添加到GitHub和coding平台上直接使用即可,生成不同的秘钥分别部署也行,他们并没有什么冲突。
这里要讲的是同一个平台不同账号,如在coding上自己有两个账号,同时在一个机器上使用。由于是同一个平台,添加同一个公钥的时候会提示该公钥已存在,此时你肯定想着新生成一个,可这样你会发现只会认到默认的,或者有A无B,有B无A。
如果希望两个公钥同时使用,还不出现 Permission Denied
,那么还需要做如下改造:
- 编辑配置文件
~/.ssh/config
,没有就新建:touch ~/.ssh/config
- 加入如下内容:
1 | # 第一个秘钥 |
以上配置保存后,此时默认还是使用的默认的秘钥,非默认秘钥那个账户的仓库去操作的时候仍会出现 You have no permission to access this repo
,要让你的仓库使用对应的秘钥,你需要将仓库地址用别名代替,如:
有个仓库地址,官方ssh地址是:
1 | git@git.coding.net:xxx/yyy.git |
我们用别名2
代替后为:
1 | git@user2:xxx/yyy.git |
这里关键是用别名地址,这个坑反反复复试了n回!!!此时就能用上指定的秘钥推送或者拉取了。
参考文档
本文标题:SSH密钥生成与部署
文章作者:凹凸曼
发布时间:2018-02-04
最后更新:2018-02-04
原始链接:https://sobaigu.com/ssh-keygen-copy-deploy.html
版权声明:转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。