生成 ssh key
$ ssh-keygen -t rsa -C "git服务端留存的邮箱地址"
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): "这里输入ssh key保存路径,不建议使用默认地址"
Enter passphrase (empty for no passphrase): "这里输入密码,建议输入空(方便后续配置)"
Enter same passphrase again: "再输入一遍密码,建议输入空(方便后续配置)"
应生成两个文件,公钥和私钥,文件名形式为xxx
(私钥),xxx_pub
或者xxx.pub
(公钥)。记住ssh key生成的文件路径。
默认情况下,ssh会使用
~/.ssh/id_rsa
这个私钥,但无法处理访问多个ssh远端的场景。
配置本地ssh访问git使用的私钥
打开 ~/.ssh/config
文件,如果没有则创建一个文本文件,添加如下内容
# 请保证 Host 和 HostName 的值相同 (macos11 实测不相同时,git ssh 访问失败)
# 远端ssh主机别名
Host bitbucket.cmbc.com.cn
# 远端ssh主机名(域名或者ip都可以)
HostName bitbucket.cmbc.com.cn
# 鉴权文件 ,这填写ssh私钥文件路径
IdentityFile "ssh 私钥文件路径"
# 使用公钥算法进行鉴权
PreferredAuthentications publickey
关于 ssh config 更多细节参考 https://linux.die.net/man/5/ssh_config
配置git上的鉴权公钥
不同的git服务方式不一样,以bitbucket为例:
登录bitbucket,依次点击头像 -> Manage account -> SSH keys -> Add key ,
将ssh 公钥文件内容复制到在输入框中,然后 保存(点击 "Add key" 按钮)
ssh 公钥形式通常是ssh-rsa + base64编码的公钥 + 邮箱地址
配置本地已有git仓库的访问协议
# 查询远程仓库地址
git remote -v
# 添加ssh协议 地址需要访问网页版的bitbucket仓库获取
git remote set-url --add origin ssh://git@bitbucket.cmbc.com.cn:7999/xxx/xxx.git
# 删除http协议 地址由git remote -v获得
git remote set-url --delete origin http://usernamge@bitbucket.cmbc.com.cn:7999/scm/xxx/xxx.git