I’m currently trying to use the dockerpy sdk to connect to my remote ubuntu server so i can manage my docker containers via python.
I am getting a few issues when attempting to do this.
docker.APIClient(base_url="ssh://user@ip")
When doing the following I am getting the error:
paramiko.ssh_exception.PasswordRequiredException: private key file is encrypted
I can resolve this issue by adding the kwarg: use_ssh_client
, but then i am forced to input a password, which limits the potential for automation.
docker.APIClient(base_url="ssh://user:@ip", use_ssh_client=True)
When using the above code, I have also tried to enter my ssh key password into the base_url such as:
docker.APIClient(base_url="ssh://user:pass@ip", use_ssh_client=True)
However, this then greets me with the following error:
docker.errors.DockerException: Invalid bind address format: ssh://root:pass@ip
I have run out of ideas and am confused as to how I am supposed to get around this?
Many thanks in advance…
2
Answers
It’s possible to make a connection as Mr. Piere answered here. Even with that question about docker.client.DockerClient which uses docker.api.client.APIClient under the hood.
You are trying to establish a connection using Password Authentication that’s why you asked to prompt a password.
I guess you need to configure the Key-Based SSH Login as said in docker’s docs
Steps to fix:
configure SSH Login on a remote server and fill
~/.ssh/config
on your local machineconnect from the local terminal using the ssh command to ensure a connection is established without asking password
ssh user@ip
connect using library
client = docker. APIClient(base_url="ssh://user@ip", use_ssh_client=True)
I had a similar Problem. Your Problem is, that you Key is encrypted. The Docker Clients doesn’t have a Passphrase option by default. I wrote some Code based on this Post. It works for me 🙂