使用system()将git命令发送到Windows

时间:2018-04-05 19:14:32

标签: r windows git ssh

我正在尝试使用R中的system()函数(在Windows 7 64位上)使用公共SSH密钥执行git命令。当我尝试执行git命令时,我收到以下错误:

ssh_askpass: exec(rpostback-askpass): No such file or directory
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我可以在命令提示符下运行完全相同的命令,但它可以工作。我也可以在git bash shell上运行完全相同的命令,它可以工作。我不确定为什么cmd在使用system()命令从R运行时找不到密钥。有没有办法指定system()命令使用的命令提示符的键位置?

更新: 一个不起作用的示例调用:

system("git push --set-upstream git@gitlab.mygit.com:MyGroup/testGitlab.git master")

system("git clone git@gitlab.mygit.com:MyGroup/gitLabTest.git")

这两个调用都会出现同样的错误。

更新2:看来使用list.files()

从R看不到ssh键
> list.files("C:/Users/Me/Documents/.ssh/", all.files = TRUE)
[1] "."  ".."

我已经验证此目录中有多个ssh密钥,可以使用ls -a从git bash shell中看到。

1 个答案:

答案 0 :(得分:1)

事实证明,在我的Windows系统(7,64位)上,当使用git bash shell创建SSH密钥时,它们被保存到“C:\ Users \ MyAcount \ .ssh”。但是,cmd.exesystem()调用的R正在查看“C:\ Users \ MyAccount \ Documents \ .ssh”。

出于某种原因,当使用直接从OS调用的cmd提示符时,它会在与bash shell相同的.ssh目录中查找。去搞清楚。 Windows,我不认为我会理解你。希望这可以帮助那些人。