2016-10-21 6 views
2

원격 서버에 연결하기 위해 sshtunnel을 사용하고 거기에서 데이터베이스로 연결합니다. 이미 다른 곳에서 입력하지 않은 한 sshtunnel이 내 ssh_private_key_password을 인식하지 못하는 것을 제외하고는 모든 것이 잘 작동합니다 (또는 제공 할 때 실수를 범할 가능성이 더 큽니다). 예상대로sshtunnel이 개인 키 암호를 인식하지 못합니다.

with SSHTunnelForwarder(
    ('my.server', 22), 
    ssh_username="myUsername", 
    ssh_pkey="~/.ssh/id_rsa", 
    ssh_private_key_password="myPassword", 
    remote_bind_address=("other.server", 3306) 
) as server: 
{do some stuff} 
나는 별도로 "my.server"에 로그인하여 ssh를 에이전트로 저장 대화 상자에서 내 개인 키 암호를 입력하면

다음 위의 코드를 실행, 그것을 작동합니다. 내가 없이 이미 이전의 어느 시점에서 서버에 로그인 한 코드를 실행하면

, 나는이 오류가 나타납니다 ValueError: No password or public key available!을 (그러나 암호가 - ssh_private_key_password - 아니?)

ssh_pkey인지 여부를 발생 공개 키 또는 개인 키를 가리 킵니다.

여기에 무슨 일이 일어날 수 있습니까? SSHTunnelForwarder의 예상 인수에 대해 내가 오해하고 있습니까? 키와 암호에 대한 근본적인 것?

+0

안녕하세요, 문제를 해결 했습니까? 우리도 똑같은 문제를 겪고 있습니다! – mrm

답변

0

해결책을 찾지 못한 경우, 제 경우에는 문제가 개인 키의 경로입니다. 대신 사용 :

ssh_pkey="~/.ssh/id_rsa",

사용 (예를 들어)을 절대 경로 : 문제는 키가 sshtunnel에 있는지 체크 나의 분석에서

ssh_pkey="/Users/<your-user>/.ssh/id_rsa",

했다 : https://github.com/pahaz/sshtunnel/blob/master/sshtunnel.py#L1018

os.path.exists(ssh_pkey)은 노래 ~/.ssh/id_rsa 경로