是否应将 sudo
命令或提升的权限与 Git 一起使用?
您不应将 sudo
命令或提升的权限(例如管理员权限)与 Git 一起使用。
如果您有非常充分的理由必须使用 sudo
,那么请确保您在每个命令中都使用它。如果您在没有 sudo
的情况下生成 SSH 密钥,然后尝试使用 sudo git push
等命令,您将不会使用您生成的相同密钥。
检查您是否连接到正确的服务器
要确保您连接到正确的域,您可以输入以下命令
ssh -vT [email protected]
ssh -vT [email protected]
您应该看到此输出
> OpenSSH_8.1p1, LibreSSL 2.7.3
> debug1: Reading configuration data /Users/YOU/.ssh/config
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug1: /etc/ssh/ssh_config line 47: Applying options for *
> debug1: Connecting to github.com port 22.
连接应在端口 22 上建立,除非您覆盖设置以使用SSH over HTTPS。
始终使用“git”用户
所有连接(包括远程 URL 连接)都必须以“git”用户身份进行。如果你尝试使用你的 GitHub 用户名进行连接,则会失败
$ ssh -T [email protected]
> Permission denied (publickey).
如果你的连接失败,并且你正在使用带有 GitHub 用户名的远程 URL,则可以更改远程 URL 以使用“git”用户。
你应通过键入来验证你的连接
ssh -T [email protected]
ssh -T [email protected]
您应该看到此输出
> Hi USERNAME! You've successfully authenticated...
确保你拥有正在使用的密钥
-
打开终端终端Git Bash。
-
验证你是否生成了私钥并将其加载到 SSH 中。
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
如果你已安装GitHub Desktop,则可以使用它来克隆存储库,而不必处理 SSH 密钥。
-
如果你正在使用 Git Bash,则打开 ssh-agent
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566
如果你正在使用其他终端提示符,例如适用于 Windows 的 Git,则打开 ssh-agent
# start the ssh-agent in the background $ eval $(ssh-agent -s) > Agent pid 59566
注意:上面的 eval 命令在你的环境中手动启动 ssh-agent。如果 ssh-agent 已作为后台系统服务运行,则这些命令可能会失败。如果发生这种情况,我们建议你查看与你的环境相关的文档。
-
验证你是否生成了私钥并将其加载到 SSH 中。
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
-
打开终端终端Git Bash。
-
验证你是否生成了私钥并将其加载到 SSH 中。
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
ssh-add
命令应该打印出一长串数字和字母。如果它没有打印任何内容,则你需要生成一个新的 SSH 密钥并将其与 GitHub 关联。
提示:在大多数系统上,默认私钥 (~/.ssh/id_rsa
和 ~/.ssh/identity
) 会自动添加到 SSH 身份验证代理。除非你在生成密钥时覆盖了文件名,否则你无需运行 ssh-add path/to/key
。
获取更多详细信息
你还可以尝试连接到 [email protected]
来检查是否正在使用该密钥
ssh -vT [email protected]
ssh -vT [email protected]
你会看到如下输出
> ...
> debug1: identity file /Users/YOU/.ssh/id_rsa type -1
> debug1: identity file /Users/YOU/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/YOU/.ssh/id_rsa
> debug1: Trying private key: /Users/YOU/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).
在此示例中,SSH 未找到任何密钥。
- “身份文件”行末尾的“-1”表示 SSH 找不到要使用的文件。
- “正在尝试私钥”行表示未找到文件。
如果文件存在,这些行将为“1”和“提供公钥”,如下所示
> ...
> debug1: identity file /Users/YOU/.ssh/id_rsa type 1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Offering RSA public key: /Users/YOU/.ssh/id_rsa
验证公钥是否已附加到您的帐户
您必须向 GitHub 提供您的公钥,以建立安全连接。
-
打开终端。
-
在后台启动 SSH 代理。
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
查找并记下您的公钥指纹。
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
-
在 GitHub 上任何页面的右上角,单击您的个人资料图片,然后单击设置。
-
在侧边栏的“访问”部分,单击 SSH 和 GPG 密钥。
-
将 SSH 密钥列表与
ssh-add
命令的输出进行比较。
-
打开命令行。
-
在后台启动 SSH 代理。
$ ssh-agent -s > Agent pid 59566
-
查找并记下您的公钥指纹。
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
-
在 GitHub 上任何页面的右上角,单击您的个人资料图片,然后单击设置。
-
在侧边栏的“访问”部分,单击 SSH 和 GPG 密钥。
-
将 SSH 密钥列表与
ssh-add
命令的输出进行比较。
-
打开终端。
-
在后台启动 SSH 代理。
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
查找并记下您的公钥指纹。如果您使用的是 OpenSSH 6.7 或更早版本
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
如果您使用的是 OpenSSH 6.8 或更高版本
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
-
在 GitHub 上任何页面的右上角,单击您的个人资料图片,然后单击设置。
-
在侧边栏的“访问”部分,单击 SSH 和 GPG 密钥。
-
将 SSH 密钥列表与
ssh-add
命令的输出进行比较。
如果您在 GitHub 上看不到您的公钥,您需要将您的 SSH 密钥添加到 GitHub,以便将其与您的计算机关联。
警告:如果您在 GitHub 上看到一个您不熟悉的 SSH 密钥,请立即将其删除,并通过GitHub 支持门户与我们联系以获得进一步的帮助。一个未知的公钥可能表示存在安全隐患。有关更多信息,请参阅“查看您的 SSH 密钥”。