我有两台EC2机器:主机和从机。为用户ubuntu
生成SSH密钥,并将其保存到两台计算机上的~/.ssh/authorized_keys
。因此,我可以将主节点中的集群用作ubuntu
用户,如下所示:
library(doSNOW)
cluster_options <-
c(rep(list(
list(host = "ec2-xx-xx-xx-xx.compute-1.amazonaws.com",
snowlib = "/usr/local/lib/R/site-library")), 2))
cl <- makeCluster(cluster_options, type = "SOCK")
clusterApply(cl, 1:2, get("+"), 3)
stopCluster(cl)
但是,当我通过openCPU
调用它时,它会发出permission denied
条消息。
目前我正在考虑两种可能的解决方案:
opencpu
用户添加SSH密钥。但我不知道怎么做,因为opencpu
是非交互式用户我更喜欢第一种方式,绝对需要帮助。但第二种方式也可以。
答案 0 :(得分:2)
最后我最终得到了解决方案。它有几个方面:
OpenCPU
应安装在两个节点上。www-data
用户生成SSH密钥(此用户执行R
进程)。这里的精细方面是www-data
是非交互式用户,因此我们需要使其成为交互式(编辑/etc/passwd
),为www-data
生成SSH密钥对,将公钥添加到服务器节点并进行制作www-data
再次进行非互动。 不太优雅,但它有效:)