2017-02-16 20 views
1

나는 python paramiko 패키지를 사용하여 서버로 ssh를 보내려고합니다.개인 키를 문자열로 제공하여 서버에 ssh 보내기 - paramiko aws lambda issue

"pem"키를 사용하여 서버로 ssh 연결을 시도했지만 제대로 작동하지 않았지만 문자열에서 개인 키 내용을 가져 와서 오류를 표시했습니다. 아래

코드 및 출력 :

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

출력 :

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

사람이 제안 할 수있는 문제가 될 수 있을까?

답변

1

개인 키 파일은 여러 줄 파일입니다.

문자열로 사용할 때 유효한 그대로 콘텐츠 구조를 그대로 유지하십시오.

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

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

franklinsijo 감사합니다. 그것은 나를 위해 완벽하게 작동했습니다. –