我正在努力弄清楚如何使用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)
答案 0 :(得分:2)
正如How does Kerberos work with SSH?所述,如果服务器在可用的身份验证机制中报告gssapi-with-mic
,则SSH中的Kerberos身份验证本质上是一些自定义数据传输,而不是常规身份验证(包括从KDC获取票证)。 p>
支持paramiko
已于2014年9月pull request 267提交,可从v1.15
开始提供。
要使用它,
SSHClient.connect
的gss_auth
参数。 gss_kex
是可选的,用于使用Kerberos而不是SSH密钥对服务器进行身份验证。