使用 SSH 连接到 Git 仓库

2018/04/28 Git SSH

关于 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

Search

    Table of Contents