ssh使用R system()命令

时间:2015-08-24 01:08:48

标签: linux r ssh

当我尝试使用ssh和R的system()命令将计算机A连接到计算机B时,出现错误:

system('ssh root@Bs-ip-address')

ssh_askpass: exec(rpostback-askpass): No such file or directory
Host key verification failed.
lost connection

但是如果我在引号中输入命令到我的Linux终端(ssh root@Bs-ip-address),它可以正常工作(为正确的用户设置了ssh密钥)。如何使用R的system()命令正确连接?或者你能建议一种更好的连接方式吗?

这可能与需要在Linux中出现的以下提示输入“yes”有关:

The authenticity of host Bs-ip-address (Bs-ip-address) cant be established.
ECDSA key fingerprint is unique-fingerprint.
Are you sure you want to continue connecting (yes/no)?

在putty会话中输入“yes”后,上面的R system()命令将起作用。但我不想每次都要进入腻子。 (作为旁注,我正在使用预先设置的ssh密钥创建许多相同的Digital Ocean实例,并尝试从R连接到它们,因此每次为每个新实例输入putty会话都不是一个可行的选项。你能使用system()发送'是'命令吗?

1 个答案:

答案 0 :(得分:2)

你可以自动接受(警告:你必须确定你将要访问的机器是可信的!)。

例如,如果主机具有rsa密钥,则可以执行以下操作:

system( 'ssh-keyscan  -t rsa Bs-ip-address  >> ~/.ssh/known_hosts' )

HIH。