【问题标题】:R Shell and Kerberos TicketR Shell 和 Kerberos 票证
【发布时间】:2016-02-17 13:45:12
【问题描述】:

我在 RStudio 中通过 JDBC 建立了 Hive 连接,没有问题,我在 Tools < Shell: kinit 中创建了 Kerberos 票证,一切正常,我可以使用 Kerberos TGT。

但是如果我通过 shell/ssh 使用相同的方法并在终端(不是 RStudio)中加载 R,R 将无法使用 Kerberos TGT 文件并失败。

如何使用 Kerberos 票证?

> [user@server ~]$: kinit
>
> Password for user@domain:  --i put the password--
>
> [user@server ~]$: R 
>
> -- R load --
>
> \> source('samecode.r')
>
> Error Caused by: java.sql.SQLException: Could not create secure connection to jdbc:hive2:....etc

有什么想法吗?如果我们不创建票证,则在 RStudio 中会发生此错误,但是当它在 tools>shell 中创建时一切正常,在控制台中它是不可能的。 我尝试用

创建它
 system('kinit');

并且可以很好地创建票证,但不能在其余代码中使用它。

【问题讨论】:

  • 为了记录,你的句子“我通过JDBC有一个hdfs连接”没有意义; HDFS 是一个文件系统,Hive 是一个数据库(有点)。
  • 感谢您的评论:)

标签: r kerberos


【解决方案1】:

您好,您可以在 R 中使用 keytab 文件和以下命令创建 kerberos 票证:

system("kinit username@ADS.IU.EDU -k -t username.keytab")

要创建keytab,您必须通过 shell 执行此操作:

ktutil
ktutil:  addent -password -p username@ADS.IU.EDU -k 1 -e rc4-hmac
Password for username@ADS.IU.EDU: [enter your password]
ktutil:  addent -password -p username@ADS.IU.EDU -k 1 -e aes256-cts
Password for username@ADS.IU.EDU: [enter your password]
ktutil:  wkt username.keytab
ktutil:  quit 

创建keytab 的所有步骤都在here 中进行了解释

并且keytab 文件必须在您的工作目录中。

【讨论】:

  • 其实keytab可以在任何目录下。加密类型取决于 KDC 级别的实际 Kerberos 配置,例如我们的集群需要aes256-cts-hmac-sha1-96 -- 请咨询您的系统管理员
  • 工作目录是 R 的东西,如果你没有指定 keytab 的路径 system 命令期望文件在你的 R 会话中的目录寄存器中。感谢您提供加密细节,我不知道。
  • 这个答案让我免于不得不初始化 ssh 密钥和设置 putty 以通过 Microsoft R 客户端运行 Spark 上下文的麻烦。谢谢!
猜你喜欢
  • 2021-10-20
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2011-05-29
  • 1970-01-01
  • 2014-03-19
相关资源
最近更新 更多