jump to navigation

Easy ssh into libvirt VMs and LXD containers September 20, 2017

Posted by jdstrand in canonical, ubuntu, ubuntu-server.

Finding your VMs and containers via DNS resolution so you can ssh into them can be tricky. I was talking with Stéphane Graber today about this and he reminded me of his excellent article: Easily ssh to your containers and VMs on Ubuntu 12.04.

These days, libvirt has the `virsh dominfo` command and LXD has a slightly different way of finding the IP address.

Here is an updated `~/.ssh/config` that I’m now using (thank you Stéphane for the update for LXD. Note, the original post had an extra ‘%h’ for lxd which is corrected as of 2020/06/23):

Host *.lxd
    #User ubuntu
    #StrictHostKeyChecking no
    #UserKnownHostsFile /dev/null
    ProxyCommand nc $(lxc list -c s4 $(echo %h | sed "s/\.lxd//g") | grep RUNNING | cut -d' ' -f4) %p
Host *.vm
    #StrictHostKeyChecking no
    #UserKnownHostsFile /dev/null
    ProxyCommand nc $(virsh domifaddr $(echo %h | sed "s/\.vm//g") | awk -F'[ /]+' '{if (NR>2 && $5) print $5}') %p

You may want to uncomment `StrictHostKeyChecking` and `UserKnownHostsFile` depending on your environment (see `man ssh_config`) for details.

With the above, I can ssh in with:

$ ssh foo.vm uptime
16:37:26 up 50 min, 0 users, load average: 0.00, 0.00, 0.00
$ ssh bar.lxd uptime
21:37:35 up 12:39, 2 users, load average: 0.55, 0.73, 0.66



1. Daniel Lange - September 21, 2017

Nice time saver, thanks for sharing the snippets!
Note: You miss the uptime command in your ssh bar.lxd example.

jdstrand - September 21, 2017

Fixed, thanks!

2. mgedmin - May 18, 2020


lxc list -c s4 $(echo %h | sed “s/\.lxd//g”) %h

you’re running lxc list with both hostname and hostname.lxd on the command line; lxc list thinks those are separate filters and combines them with AND, and as a result fails to find the container.

I removed the second %h and the command works for me now.

jdstrand - June 23, 2020

Yes, there was a typo. Thanks! (I’ll adjust it in the post)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: