从 Python 中的 SSH2 公钥中提取authorized_keys密钥的密钥



我正在尝试为authorized_keys文件提取所需的密钥。它与我打开密钥文件 (.pub) 时得到的不同。 这是我到目前为止的代码。每当我尝试在 pubfile 上运行它时,我都会在文件的第一行中得到指向 SSH2 的无效语法。"----开始 SSH2 公钥----"我不知道为什么这不起作用。提前感谢您的任何帮助

#!/bin/env python
import fileinput
import subprocess
import sys

def parse_pubkey( pubfile ):
    """This routine returns the key-type and key from a public-key file.
    """
    try:
        # try to parse the Windows-format file into an OpenSSH-compatible representation
        # by calling the Unix "ssh-keygen" utility. This call will fail if the keyfile
        # is already in OpenSSH format
        keystr = subprocess.check_output( 'ssh-keygen -i -f %s 2>/dev/null' % pubfile,    shell=True )
    except subprocess.CalledProcessError:
        # we caught an exception, so the file must already be in OpenSSH format.  Just
        # read in the contents
        keystr = open( pubfile, 'r' ).read()
    # now split the resulting string on whitespace and return the first two fields
    return keystr.split()[0:2]

parse_pubkey(pubfilename.pub)
这是我

对你的代码的重写,没有注释:

#!/usr/bin/env python
import subprocess
import sys
def parse_pubkey(pubfile):
    """Return the key-type and key from a public-key file.
    """
    try:
        keystr = subprocess.check_output(
            'ssh-keygen -i -f %s 2>/dev/null' % pubfile,
            shell=True)
    except subprocess.CalledProcessError:
        with open(pubfile) as f:
            keystr = f.read()
    return keystr.split()[0:2]
if __name__ == '__main__':
    pubfilename = sys.argv[1]
    print parse_pubkey(pubfilename)

假设模块被命名为 parsepub.py ,它将按如下方式执行:

$ python parsepub.py id_rsa.pub

相关内容

  • 没有找到相关文章