I'm using sshtunnel to connect to connect to a remote server and on to a database from there. Everything is working fine, except that sshtunnel doesn't seem to recognize my ssh_private_key_password
unless I've already entered it elsewhere (or more likely I'm making a mistake when providing it).
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}
If I log into "my.server" separately and enter my private key password in the dialog for storage by ssh-agent, and then run the code above, it works as expected.
If I run the code without having already logged into the server at some point earlier, I receive this error: ValueError: No password or public key available!
(But the password is there - ssh_private_key_password - no?)
This happens whether ssh_pkey
is pointing to the public key or the private key.
What might be happening here? Am I misunderstanding something about the expected arguments for SSHTunnelForwarder? Something more fundamental about the key and password?
id_rsa
should be start like-----BEGIN RSA PRIVATE KEY-----
, not with the title of-----BEGIN OPENSSH PRIVATE KEY-----
. – Officer