deploy key 和 ssh key 的区别就是deploy key 只对一个repo有更改权,ssh key是对你账户下所有repo都有管理员权限。
deploy key 和 ssh key 一样,都可以用 ssh-keygen 命令生成。但是生成 ssh-key 使用了默认 id_rsa.pub 文件存储,所以 deploy key 要放在其他的文件中。deploy key是每个Repository 独有的,主要用于 push 代码时使用。每个 Repo 的 deploy key 都是单独设置的,不能多个 Repo 使用相同的 deploy key。如果 Repository 没有添加 deploy key 时直接 push 代码,会出现权限错误。
生成deploy key ,另存
ssh-keygen -f ~/.ssh/deploy_key_repo1
添加路径到认证列表
ssh-add ~/.ssh/deploy_key_repo1
查看认证列表,看是否成功添加
ssh-add -l
复制 deploy public key
$ cat ~/.ssh/deploy_key_repo1.pub | pbcopy
打开github网站,在某个 Repository里面点击设置,添加这个复制的deploy public key , 并授予write权限给这个设备。
这是git push 那个repo可能还会出现让你输入密码的问题,或者说你没有权限。这是查看.git/config文件查看传输协议, 如果是http模式改为ssh模式
[remote "origin"]
url = https://github.com/yxrdydh/vim-latex-live-preview.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
更改后为
[remote "origin"]
url = git@github.com:yxrdydh/vim-latex-live-preview.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
要注意语句git remote -v
查看当前的传输协议不一定对,一定要查看config文件有没有问题。语句 git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
设定传输协议也不一定生效。