【问题标题】:How to use local Github ssh key when issuing remote git commands on another machine via ssh通过 ssh 在另一台机器上发出远程 git 命令时如何使用本地 Github ssh 密钥
【发布时间】:2021-03-21 21:37:33
【问题描述】:

我有一台本地机器,其 ssh 密钥对与 github 上的公共密钥对。众所周知,这让我无需每次都输入用户名/密码即可与 Github 交互。

我还有一台远程机器,我可以使用相同的公钥 ssh 进入。 Visual Studio Code 允许我通过工作区与这台机器进行交互。而且我注意到当我通过它的终端界面运行 git 命令时,我没有收到密码提示。

当我尝试通过终端启动的 ssh 会话运行相同的 git 命令时,系统会提示我输入密码。

Visual Studio Code 如何实现这一点?如何通过我的常规终端启动 ssh 会话来实现这一点? 请注意,我不想将我的密钥对放在这台远程机器上

我使用的是 Ubuntu 20.04


编辑

我只想指出,明年晚些时候github removes the option of password authentication 时,这个问题可能会变得更有趣。

【问题讨论】:

  • 你的主机是哪个操作系统(运行 VS Code)?
  • 这是 Ubuntu 20.04
  • 好的。很可能是代理转发。我会写一个答案。
  • 我想知道你为什么不将远程机器的公钥添加到你的 GitHub 帐户?
  • @NicolasVoron (在高层次上 - 答案是因为我对此很陌生,对我来说并不那么明显)我很早就放弃了这个,因为它是一个新客户并且没有'不希望任何人能够立即访问回购...但是现在你提醒我,这样做很有意义......并将我自己的用户添加到机器作为额外的保护层。

标签: git github visual-studio-code ssh


【解决方案1】:

在终端上执行此操作的规范方法是使用agent forwarding

原则是您在本地机器上运行一个“代理”,可以访问您的私钥。通常,代理会在内存中加载和解密您的私钥。当您通过 SSH 连接到远程计算机时,您指定“代理转发”以使远程计算机通过您的 SSH 连接访问您的本地代理。

这让远程计算机上的用户(和“root”)请求本地代理签署 ssh 连接请求。


假设一个 *nix 主机或 Mac,那么您很可能将 OpenSSH 用于您的客户端。要设置您的代理,并将您的私钥添加到其中:

ssh-add

或者,如果您的私钥有特殊名称,请输入:

ssh-add path/to/private/key

然后当你 ssh 进入你的远程机器时,只需添加 -A 开关来转发代理:

ssh -A remote-machine

这将使您的用户会话(和 root)使用您的本地 SSH 密钥,而不是存储在远程主机上的任何内容。 Git 会隐式选择使用代理,你不需要给它任何特殊说明。


如果您使用的是 Windows 和 Putty,那么值得一提的是 pageant,它适用于 Putty。这相当于使用 ssh-add 的 Windows。它有自己的图形用户界面,相当不言自明。

【讨论】:

  • 太棒了!让我感到困惑的一件事是我忘记将 .git/config 中的 http 更改为 ssh url。赏金将在 23 小时内获得奖励
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多