Skip to content

Instantly share code, notes, and snippets.

@acdha
Created July 23, 2013 17:16
Show Gist options
  • Save acdha/6064215 to your computer and use it in GitHub Desktop.
Save acdha/6064215 to your computer and use it in GitHub Desktop.
Connecting with paramiko using the user's OpenSSH config
client = paramiko.SSHClient()
client._policy = paramiko.WarningPolicy()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_config = paramiko.SSHConfig()
user_config_file = os.path.expanduser("~/.ssh/config")
if os.path.exists(user_config_file):
with open(user_config_file) as f:
ssh_config.parse(f)
cfg = {'hostname': options['hostname'], 'username': options["username"]}
user_config = ssh_config.lookup(cfg['hostname'])
for k in ('hostname', 'username', 'port'):
if k in user_config:
cfg[k] = user_config[k]
if 'proxycommand' in user_config:
cfg['sock'] = paramiko.ProxyCommand(user_config['proxycommand'])
client.connect(**cfg)
@djhume
Copy link

djhume commented Jun 14, 2016

Thanks, this is great!

@Arun-Baskaran
Copy link

I'm new to python, could you explain me how to use paramiko / Pexpect in python ?

Copy link

ghost commented Apr 19, 2018

If someone happens here because they are using Fabric: env.use_ssh_config = True

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment