【发布时间】:2021-03-03 20:50:39
【问题描述】:
好吧,我被难住了。在过去的几个月里,我偶尔会从 GitHub 收到严厉的消息,警告我我使用密码身份验证提交了我的 R 包,而这种情况将会消失。美好的。所以我很想换;但是……
我查看了各种帮助文件。我已经让 R 生成一个 RSA 密钥。我已将该密钥复制到我的 GitHub 帐户。我已经运行ssh-add。说了这么多,我推送了一个更新,发现我在 GitHub 上的 SSH 密钥信息仍然显示它从未被使用过。
我似乎找到了一些有用的东西here。事实上,我验证了我的远程来源为https://github.com/rvlenth.git,这表明它仍然设置为密码身份验证。所以我做了那里的建议来删除那个起源。它建议寻找可以给我新链接的东西(显示在一张小图片中),但我在我的存储库中找不到它。看起来应该是git@github.com:rvlenth/emmeans,所以我像个傻瓜一样跑了git remote add origin git@github.com:rvlenth/emmeans。
它似乎接受了这一点,但现在我的 RStudio 界面中的拉取和推送按钮变灰了。我尝试恢复到 https 设置,但仍然是灰色的。
我该怎么做才能让它工作?我感到很受胁迫,因为如果我不知道该怎么做,GitHub 会关闭我。
更新
好的,我找到了绿色按钮并复制了它为 SSH 身份验证提供的 URL。我还创建了一个新密钥,在此过程中输入我的 GitHub 密码,并将公钥复制到 GitHub。我有一封来自 GitHub 的电子邮件确认了这一点。它仍然失败。事实上,我只是尝试创建一个新项目,但它甚至无法正常工作:
>>> C:/Program Files/Git/bin/git.exe clone --progress git@github.com:rvlenth/emmeans.git emmeans
Cloning into 'emmeans'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
更新 2
这是我在跟进@torek 的建议后得到的结果
$ ssh -Tvvv git@github.com
OpenSSH_8.4p1, OpenSSL 1.1.1i 8 Dec 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/c/Users/rlenth/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/c/Users/rlenth/.ssh/known_hosts2'
debug2: resolving "github.com" port 22
debug2: ssh_connect_direct
debug1: Connecting to github.com [140.82.112.4] port 22.
debug1: connect to address 140.82.112.4 port 22: Connection timed out
ssh: connect to host github.com port 22: Connection timed out
所以看起来我有一个相当新版本的 ssh(显然是重新安装了最新版本的 git)
之前,我做过:
$ ls -l ~/.ssh
total 5
-rw-r--r-- 1 rlenth 197121 1766 Mar 3 16:05 id_rsa
-rw-r--r-- 1 rlenth 197121 400 Mar 3 16:05 id_rsa.pub
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/rlenth/.ssh/id_rsa:
Identity added: /c/Users/rlenth/.ssh/id_rsa (/c/Users/rlenth/.ssh/id_rsa)
...我输入了我的 GitHib 帐户的密码。看起来我的主目录正在正确解析。我需要创建一个known_hosts 文件吗?
更新 3
自更新 2 以来,我已经完成了:
- 添加密码并包含 GitHub 帮助文件中推荐的用于设置 SSH 的
.bashrc文件 - 重新启动 git bash,幸运的是,现在我必须输入密码
- 使用 Ed25519 协议生成新密钥;还使用
ssh-add添加了这个并复制到我的 GitHub 站点
通过所有这些更改,当我执行ssh -Tvvv git@github.com 时仍然会超时。所以我也尝试了(没有运气测试任何这些)
- 运行 Cisco VPN 应用程序,它应该让它看起来像我在校园里
- 将
ssh.exe添加到 Windows Defender 防火墙允许的应用列表中 - 暂时完全禁用防火墙(太可怕了...)
有没有人成功设置了 Windows 的 SSH 身份验证?我真的需要你的帮助!
更新 4
我放弃了让 SSH 工作。相反,我按照 GitHub 的说明创建个人访问令牌。到目前为止,这似乎有效。要么,要么它仍在使用我的密码,我会收到另一封指责它的电子邮件。时间会证明一切——但我至少可以恢复正常运行。
更新n
在我的路由器中更改防火墙设置(允许点对点应用程序)后,我现在可以通过 SSH 进行身份验证。最后。感兴趣的朋友可以看看Mediacom提供的路由器:Technicolor TC8305C。
【问题讨论】:
-
如果您实际上输入了
git@github.com/rvlenth/emmeans作为远程的目的地,那么您缺少:并且您有太多/:git@github.com:rvlenth/emmeans。如果您在浏览器中访问您的存储库,请单击绿色的“CODE”大按钮,然后选择“ssh”,您可以复制该值。 -
你是对的。这就是我尝试过的,如我更正的问题中所示的冒号。这是我的问题中的一个错字,但我尝试过的实际上确实有冒号。
-
感谢您告诉我有关绿色按钮的信息。事实证明最后应该有一个 .git 。尽管如此,它还是没有用。事实上,我尝试从该 URL 创建一个新项目,但找不到它。我想知道,创建 RSA 密钥时是否需要使用我的 GitHub 密码?
-
是的,
.git是可选的。如果没有它不能工作,那么它就不能工作。 -
Git 从字面上运行 ssh。如果您的计算机上仅安装了一个版本的 ssh,那么当您运行 ssh 时,您将获得相同的版本:因此请尝试
ssh -Tvvv git@github.com以查看 ssh 尝试与 GitHub 的身份验证进行协商。如果您安装了多个 ssh,请确定您的 Git 使用哪一个,然后将其与ssh -Tv一起使用。