将 Kerberos 身份验证与 Paramiko 结合使用
Using Kerberos authentication with 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)
正如 How does Kerberos work with SSH? 所说,如果服务器在可用的身份验证机制中报告 gssapi-with-mic
,则 SSH 中的 Kerberos 身份验证本质上是一些自定义数据传输而不是常规身份验证(包括从 KDC 获取票证)。
对它的支持 paramiko
已于 2014 年 9 月 pull request 267 提交,并且从 v1.15
开始可用。
要使用它,
- 有关其他要求,请参阅 Installing docs
- 使用
SSHClient.connect
的 gss_auth
参数。 gss_kex
可选择使用 Kerberos 而非其 SSH 密钥对服务器进行身份验证。
我正在努力弄清楚如何通过 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)
正如 How does Kerberos work with SSH? 所说,如果服务器在可用的身份验证机制中报告 gssapi-with-mic
,则 SSH 中的 Kerberos 身份验证本质上是一些自定义数据传输而不是常规身份验证(包括从 KDC 获取票证)。
对它的支持 paramiko
已于 2014 年 9 月 pull request 267 提交,并且从 v1.15
开始可用。
要使用它,
- 有关其他要求,请参阅 Installing docs
- 使用
SSHClient.connect
的gss_auth
参数。gss_kex
可选择使用 Kerberos 而非其 SSH 密钥对服务器进行身份验证。