3

我有两台 EC2 机器:主机和从机。为用户生成 SSH 密钥ubuntu并保存到~/.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消息。

目前我正在考虑两种可能的解决方案:

  1. opencpu为用户添加 SSH 密钥。但我不知道如何像opencpu非交互式用户那样做
  2. 使 master 无需任何 SSH 密钥即可访问 slave

我更喜欢第一种方式,在这里肯定需要帮助。但是第二种方式也可以。

4

1 回答 1

2

最后我得到了解决方案。它有几个方面:

  1. 应在两个 EC2 节点之间配置基于主机的身份验证。好的教程可以在这里找到:https ://en.wikibooks.org/wiki/OpenSSH/Cookbook/Host-based_Authentication
  2. OpenCPU应该安装在两个节点上。
  3. 应为www-data用户生成 SSH 密钥(R使用此用户执行进程)。这里的微妙之处www-data是非交互用户,因此我们需要使其交互(编辑/etc/passwd),为 生成 SSH 密钥对www-data,将公钥添加到服务器节点并www-data再次使其非交互。

不是那么优雅,但它有效:)

于 2015-11-05T21:56:12.253 回答