pyinfra
pyinfra copied to clipboard
Does not work with encrypted SSH keys on macos 12.2
Describe the bug
Pyinfra is unable to connect when authenticating with an SSH key. Supplying or ommitting ssh_key_password in the inventory or as a cli argument does not change the behavior in any way.
--> Loading config...
--> Loading inventory...
--> Connecting to hosts...
[myhost.com] Authentication error (username=my_user) (Private key file is encrypted)
--> pyinfra error: No hosts remaining!
To Reproduce
inventory.py
:
my_hosts = [
('myhost.com', {'ssh_user': 'my_user', 'ssh_key_password': '<password>'}),
]
deploy.py
:
from pyinfra.operations import server
server.shell(
name='Run an ad-hoc command', # optional name for the operation
commands='echo "hello world"',
)
pyinfra inventory.py deploy.py
Meta
PIP-installed.
--> Support information:
If you are having issues with pyinfra or wish to make feature requests, please
check out the GitHub issues at https://github.com/Fizzadar/pyinfra/issues .
When adding an issue, be sure to include the following:
System: Darwin
Platform: macOS-12.2-arm64-arm-64bit
Release: 21.3.0
Machine: arm64
pyinfra: v1.6.1
Executable: /opt/homebrew/bin/pyinfra
Python: 3.9.9 (CPython, Clang 13.0.0 (clang-1300.0.29.3))
Hi @andybeletsky - could you try with specifying the key directly, ie ssh_key: '/path/to/key'
. You should get a prompt for the password.
Are you using an SSH agent? I think the issue here is when a key isn't explicitly provided the password flow isn't followed, which should only happen if a key is found on disk (by default pyinfra will look for agent + keys if none provided).
Closing pending furhter information, happy to reopen with more info :)