2017-09-27 1 views
0

pexpect를 사용하여 원격 서버의 인증 된 키 파일에 공개 키를 추가하려고하지만 작동하지 않습니다. 오류가 없더라도 출력을 파일로 재지 정하는 것은 발생하지 않는 것 같습니다. 여기pexpect를 사용하여 원격 서버의 파일에 추가하는 방법

print "DEGUG: === append to authorized keys START ===" 
print "DEBUG: sending echo <local public key> >> /root/.ssh/authorized_keys" 
print "  local public key: " + local_public_key 
child.sendline('echo ' + local_public_key + ' >> /root/.ssh/authorized_keys') 
child.expect(prompt) 
child.expect(prompt) 
child.sendline('echo $?') 
child.expect(prompt) 
ec = child.before.strip() 
print("exit code: >>>>" + str(ec) + "<<<<") 
print "DEGUG: === append to authorized keys END ===" 

출력됩니다 :

DEGUG: === append to authorized keys START === 
DEBUG: sending echo <local public key> >> /root/.ssh/authorized_keys 
    local public key: ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAy408yT80SP2x9rZkR56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 

echo ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAy408yT80SP2x9rZkR56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 
>> /root/.ssh/authorized_keys 
R56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 
ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAy408yT80SP2x9rZkR56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 
[[email protected] ~]# >> /root/.ssh/authorized_keys 
[[email protected] ~]# echo $? 
echo $? 
0 
[[email protected] ~]# exit code: >>>>echo $? 
0 
[[email protected] ~]<<<< 
DEGUG: === append to authorized keys END === 

나는 리모콘 authorized_keys 파일을 확인

가, 새 키가 추가되지 않습니다 여기 내 코드입니다. 키가 파일에 쓰여지는 대신 stdout으로 반향 된 것으로 보입니다. 해결 방법을 잘 모르겠습니다.

답변

1

\n 문자를 제거하는 것을 잊어 버린 것 같습니다. local_public_key입니다. 그럼 이렇게 해보십시오 :

child.sendline('echo ' + local_public_key.strip() + ' >> /root/.ssh/authorized_keys') 
#          ^^^^^^^^ 
+0

그건 바보 같은 저요! ;-) 이것을 지적 해 주셔서 감사합니다. – Lidia

관련 문제