关于 SSH
使用 SSH 协议可以连接远程服务器和服务并向它们验证。 利用 SSH 密钥可以连接 Git 仓库,而无需在每次访问时提供用户名或密码。
检查现有 SSH 密钥
输入 ls -al ~/.ssh
以查看是否存在现有 SSH 密钥
$ ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist
生成新 SSH 密钥
# 生成默认秘钥文件
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# 生成自定义秘钥文件
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com" -f ~/.ssh/my_rsa
将 SSH 密钥添加到 ssh-agent
在后台启动 ssh 代理。
$ eval "$(ssh-agent -s)"
> Agent pid 59566
如果您使用的是 macOS Sierra 10.12.2 或更高版本,则需要修改 ~/.ssh/config 文件以自动将密钥加载到 ssh-agent 中并在密钥链中存储密码。
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
将 SSH 私钥添加到 ssh-agent 并将密码存储在密钥链中。 如果您创建了不同名称的密钥,或者您要添加不同名称的现有密钥,请将命令中的 id_rsa 替换为您的私钥文件的名称。
$ ssh-add -K ~/.ssh/id_rsa
注: 使用自定义秘钥文件时, 在 iterm2 和 VS Code 中 push 操作都需要将 SSH 密钥添加到 ssh-agent, 否则提示以下错误:
ERROR: Permission to yourname/repository.git denied to yourname.
fatal: Could not read from remote repository.
新增 SSH 密钥到平台 (GitHub 等) 帐户
将 SSH 密钥复制到剪贴板。
$ pbcopy < ~/.ssh/id_rsa.pub
提示:如果 pbcopy 不可用,可找到隐藏的 ~/.ssh
文件夹,在常用的文本编辑器中打开该文件,并将其复制到剪贴板。
到对应平台账户设置中添加 SSH 密钥。
测试 SSH 连接
$ ssh -T git@github.com
> Hi weixinbing! You've successfully authenticated, but GitHub does not provide shell access.
HTTPS Git 怎么转到 SSH
查看当前地址
git remote -v
origin https://github.com/yourname/repository.git (fetch)
origin https://github.com/yourname/repository.git (push)
设置为 ssh 地址 (多个 SSH-KEY , 把 host 替换为 config 中配置的名称)
$ git remote set-url origin git@host:yourname/repository.git
修改完成后查看地址,配置为 ssh 地址就正确了
$ git remote -v