Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在通过ssh在另一台机器上发出远程git命令时使用本地Github ssh密钥_Git_Github_Visual Studio Code_Ssh - Fatal编程技术网

如何在通过ssh在另一台机器上发出远程git命令时使用本地Github ssh密钥

如何在通过ssh在另一台机器上发出远程git命令时使用本地Github ssh密钥,git,github,visual-studio-code,ssh,Git,Github,Visual Studio Code,Ssh,我在github上有一台本地机器,它有一个ssh密钥对和一个公共密钥对。众所周知,这允许我与Github进行交互,而无需每次输入用户名/密码 我还有一台远程计算机,我可以使用相同的公钥通过ssh将其连接到其中。VisualStudio代码,允许我通过工作区与此计算机交互。我注意到,当我通过它的终端界面运行git命令时,并没有收到密码提示 当我尝试通过ssh会话运行相同的git命令时,系统会提示我输入密码 VisualStudio代码是如何实现这一点的?通过常规终端启动ssh会话如何实现这一点请注

我在github上有一台本地机器,它有一个ssh密钥对和一个公共密钥对。众所周知,这允许我与Github进行交互,而无需每次输入用户名/密码

我还有一台远程计算机,我可以使用相同的公钥通过ssh将其连接到其中。VisualStudio代码,允许我通过工作区与此计算机交互。我注意到,当我通过它的终端界面运行git命令时,并没有收到密码提示

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

VisualStudio代码是如何实现这一点的?通过常规终端启动ssh会话如何实现这一点请注意,我不想将密钥对放在此远程计算机上

我正在使用Ubuntu 20.04


编辑


我只想指出,明年晚些时候,这个问题可能会变得更有趣。

在终端上实现这一点的标准方法是使用

其原理是,您有一个“代理”在本地计算机上运行,该代理可以访问您的私钥。通常,代理将在内存中加载和解密您的私钥。当您通过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,那么值得一提的是哪一个可以与Putty一起使用。这与使用ssh-add的Windows等效。它有自己的GUI,非常简单。

哪一个操作系统是你的主机(运行VS代码)?它是Ubuntu 20.04。很可能是代理转发。我会写一个答案。我想知道你为什么不将远程机器的公钥添加到你的GitHub帐户?@NicolasVoron(从高层次上说——答案是因为我对这一点比较陌生,对我来说并不明显),我很早就放弃了它,因为它是一个新客户,不希望任何人能够立即访问回购协议。。。但现在你提醒我,这样做很有意义。。。并将我自己的用户添加到机器中作为额外的保护层。真是太棒了!有一件事让我大吃一惊,那就是我忘了在
.git/config
中从http更改为SSHURL。悬赏将在23小时内获得奖励