使用Paramiko进行Kerberos身份验证

时间:2015-01-30 16:06:11

标签: python kerberos paramiko

我正在努力弄清楚如何使用python和paramiko进行kerberos身份验证。我找到了paramiko的文档,但不知道如何实现它,而且似乎缺少专门针对kerberos和paramiko的教程,因为它是如此新的。

当我在python外面ssh正常使用时,我插入一张智能卡并在OSX Mavericks的命令行中键入以下内容......

$ kshell
$ pkinit

...然后提示我输入与卡相关的密码。从那里我得到一张kerberos票,可以ssh到服务器。

我过去曾使用过paramiko但没有使用kerberos ......下面的代码是我尝试过的一个例子,但是我遇到了错误,无法连接。

import paramiko
import gssapi

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname = 'my.server.name',
        username = 'user.name',
        gss_auth = True,
        gss_kex = True)

1 个答案:

答案 0 :(得分:2)

正如How does Kerberos work with SSH?所述,如果服务器在可用的身份验证机制中报告gssapi-with-mic,则SSH中的Kerberos身份验证本质上是一些自定义数据传输,而不是常规身份验证(包括从KDC获取票证)。 p>

支持paramiko已于2014年9月pull request 267提交,可从v1.15开始提供。

要使用它,

  1. 有关其他要求,请参阅Installing docs
  2. 使用SSHClient.connectgss_auth参数。 gss_kex是可选的,用于使用Kerberos而不是SSH密钥对服务器进行身份验证。