使用Python subprocess进行kinit

5
我正在尝试通过subprocess+ssh连接到远程服务器,以列出目录中的文件并打印该目录中文件的内容。为了做到这一点,我需要作为Python subprocess运行kinit。你有任何想法吗?假设用户使用他们的kerberos id和密码登录。
谢谢。
1个回答

8
如果您想运行 kinit 以获取Kerberos票证,请提示用户输入密码(例如使用getpass模块),然后将该输入传递给子进程。具体操作如下:
from subprocess import Popen, PIPE

kinit = '/usr/bin/kinit'
kinit_args = [ kinit, '%s@%s' % (userid, realm) ]
kinit = Popen(kinit_args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
kinit.stdin.write('%s\n' % password)
kinit.wait()

这将通过常规方式建立一张票据,可以被任何以常规方式查找Kerberos票证的工具所使用(在这个片段的代码中,它用于认证LDAP连接):https://github.com/jeremyroman/pyceo/blob/master/ceo/ldapi.py

有没有办法在不提示密码的情况下完成这个操作? - sdfasdfasdf
1
如果你知道密码,你可以直接使用它而不需要提示。据我所知,除非你有密码或 keytab,否则无法获得 Kerberos 票据。 - Jeremy Roman
1
еҰӮжһңжӮЁжғійҒҝе…ҚеңЁд»Јз ҒдёӯеҢ…еҗ«еҜҶз ҒпјҢеә”дёәжңҚеҠЎдё»дҪ“еҲӣе»әдёҖдёӘkeytabж–Ү件kadmin -qвҖңktadd -k /etc/apache2/http.keytab HTTP/www.example.comвҖқпјҢ并дҪҝз”Ёkinit -k -t /etc/apache2/http.keytab HTTP/www.example.comдёҺд№ӢдёҖиө·иҜ·жұӮTGTгҖӮ - Ereli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接