【问题标题】:Switching RStudio project to SSH authentication将 RStudio 项目切换到 SSH 身份验证
【发布时间】: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 一起使用。

标签: git ssh rstudio


【解决方案1】:
ssh: connect to host github.com port 22: Connection timed out

只要您看到此错误,再多的私钥/密码也无济于事。 SSH 甚至没有进入身份验证阶段。

我还创建了一个新密钥,在此过程中输入了我的 GitHub 密码

当您创建新密钥时,您不必输入密码(起初我不会为了测试 SSH)。
如果你确实输入了密码(这将通过加密来保护你的私钥),它不一定是你的 GitHub 密码(实际上,它不应该,作为最佳实践:不要重复使用密码)

OP Russ Lenth 确认 the comments 存在防火墙问题:

我登录到我的路由器并更改了防火墙设置以不阻止点对点应用程序。
现在我可以通过 SSH 连接了。

【讨论】:

  • 感谢您的澄清。我也有同样的怀疑。我想我的下一步是看看我是否可以让它在我的笔记本电脑而不是我的台式机上工作。除此之外,这将使我可以选择将笔记本电脑带到其他地方,这可能会给我一个线索,让我知道我的路由器是否是阻止它的原因。
  • 更新:我登录到我的路由器并更改了防火墙设置以不阻止对等应用程序。现在我可以通过 SSH 连接。只是感觉有点恶心解除所有这些。我似乎没有选择只启用某些选项(我可以,对于不包括 ssh 的标准列表)
  • @RussLenth 好的。我已将您的评论包含在答案中以提高知名度。
猜你喜欢
  • 1970-01-01
  • 2020-05-28
  • 2013-03-18
  • 2019-09-28
  • 2014-11-13
  • 2015-12-03
  • 1970-01-01
  • 2018-01-07
相关资源
最近更新 更多