python-2.7 - 如何将私钥作为字符串提供给 paramiko 以进行 ssh 连接?

标签 python-2.7 paramiko stringio

我正在尝试使用 ssh 使用 Python paramiko 包连接到服务器。

当我尝试使用“pem” key ssh 进入服务器时,它起作用了,但是当我通过在字符串中获取私钥内容来尝试它时,它显示了错误。

使用以下代码:

    import paramiko
    import StringIO
    content="-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQE ----whatever content"
    private_key = StringIO.StringIO(content)
    k = paramiko.RSAKey.from_private_key(private_key)
    c = paramiko.SSHClient()
    c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    host="XX.XX.XX.XXX"
    c.connect( hostname = host,username="ec2-user", pkey = k )
    print "Connected to " + host`

我得到以下输出:

Traceback (most recent call last):
  File "one.py", line 6, in <module>
    k = paramiko.RSAKey.from_private_key(private_key)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/pkey.py", line 217, in from_private_key
    key = cls(file_obj=file_obj, password=password)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/rsakey.py", line 42, in __init__
    self._from_private_key(file_obj, password)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/rsakey.py", line 167, in _from_private_key
    data = self._read_private_key('RSA', file_obj, password)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/pkey.py", line 277, in _read_private_key
    raise SSHException('not a valid ' + tag + ' private key file')
paramiko.ssh_exception.SSHException: not a valid RSA private key file

谁能指出可能出现的问题吗?

最佳答案

私钥文件是一个多行文件。

因此,当将其用作字符串时,请保留内容结构以保持其有效。

content = """-----BEGIN RSA PRIVATE KEY-----
              MIIEpgSIJOBAAKCAQEAqwH5fWIbtFRankLqvtnQ6OKwmIa49i
              ..........................................
              -----END RSA PRIVATE KEY-----"""

private_key = StringIO.StringIO(content)
k = paramiko.RSAKey.from_private_key(private_key)

关于python-2.7 - 如何将私钥作为字符串提供给 paramiko 以进行 ssh 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42269471/

相关文章:

python - 如何在 Python 中将字符串包装到文件中?

python - 在python中逐行读取输出

python - python 中的 SFTP 方法获取文件的基本名称和完整路径

c++ - 使用 swig 将 python StringIO 传递给 C++ stringstream

python - 如何过滤日期时间字段上的对象?

python - Paramiko exec_command stdout、stderr、stdin 到日志记录器

python json转储可写性 "not write able"

python - 更改函数内装饰器的参数

Django celery : Import error - no module named task

python - 尝试编写 C++ 包装函数时无法在 Cython 中将 Numpy 数组转换为 OpenCV Mat