我正在尝试使用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()
> list.files("C:/Users/Me/Documents/.ssh/", all.files = TRUE)
[1] "." ".."
我已经验证此目录中有多个ssh密钥,可以使用ls -a
从git bash shell中看到。
答案 0 :(得分:1)
事实证明,在我的Windows系统(7,64位)上,当使用git bash shell创建SSH密钥时,它们被保存到“C:\ Users \ MyAcount \ .ssh”。但是,cmd.exe
中system()
调用的R
正在查看“C:\ Users \ MyAccount \ Documents \ .ssh”。
出于某种原因,当使用直接从OS调用的cmd
提示符时,它会在与bash shell相同的.ssh目录中查找。去搞清楚。 Windows,我不认为我会理解你。希望这可以帮助那些人。