生成SSH key
1. 首先在本地生成SSH key,-C参数是邮箱地址,不过其实可以随便填
ssh-keygen -C 'xxx@xxx.com'
2. 然后出来个问题:
Enter file in which to save the key (/Users/chuckie/.ssh/id_rsa):
直接回车
3. 如果之前生成过SSH key,再来个问题:
~/.ssh/id_rsa already exists.
Overwrite (y/n)?
输入y覆盖
4. 一路回车就可以创建成功了
5. 登录gitlab,github等git仓库,在个人中心找到settings -> SSH keys,不同服务器大同小异
6. 选择新建SSH key将之前生成的ssh key拷进去,title自己随便改。SSH key文件的位置创建的时候有出现过,默认在用户的主目录下有个.ssh/id_rsa.pub,windows:C:\Users\Administrator\.ssh,linux:~/.ssh/id_rsa.pub
解决SSH key不生效的问题
好了,重点来了。运气好的话,跑完上面的步骤,再用git拉取或者推送远程代码就不用手动输入用户名密码了。不过有的时候会出现不生效的情况,还是提示要输入用户名密码,这是因为本地ssh agent里的key没有刷新,这里讲一下怎么解决。
1. 添加SSH key
ssh-add (如果key存放路径不是默认的话,这里可以指定路径)
2. 这里可能会遇到错误
Could not open a connection to your authentication agent
运行命令
ssh-agent bash //或者 eval "$(ssh-agent -s)"
后重新ssh-add
SSH key不生效的其他原因
一、linux上.ssh文件夹及其中的文件有权限要求,检查一下权限是否符合要求
1. .ssh目录的权限必须是700
2. .ssh/authorized_keys文件权限必须是600
二、有一次我在拉取远程代码的时候手贱按了个ctrl+c强制退出,结果再尝试就开始要手动输入用户名密码了,不过这个简单,输了一次之后就不用再输了
Git报500 error
拉取或者推送代码时失败,出现如下error信息
error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 Internal Server Error
这个可能是数据量太大,用Http方式对数据量有限制,可以通过修改远程url改成用ssh方式连接
git remote set-url origin git@github.com:(group)/(repository).git
具体url可以在repository首页找到,有时需要加`ssh://`协议前缀
使用http方式输入用户名密码错误
解决方法:关掉输入框,会提示命令行输入,使用命令行输入用户名密码成功登录。
同样的用户名密码使用输入框输入会登录失败,原因不明。
网友评论