Dustin Kirkland
on 25 February 2017
HOWTO: Automatically import your public SSH keys into LXD Instances
Just another reason why LXD is so awesome…
You can easily configure your own cloud-init configuration into your LXD instance profile.
In my case, I want cloud-init to automatically ssh-import-id kirkland, to fetch my keys from Launchpad. Alternatively, I could use gh:dustinkirkland to fetch my keys from Github.
Here’s how!
First, edit your default LXD profile (or any other, for that matter):
$ lxc profile edit default
Then, add the config snippet, like this:
config:
user.vendor-data: |
#cloud-config
users:
- name: root
ssh-import-id: gh:dustinkirkland
shell: /bin/bash
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
name: default
Save and quit in your interactive editor, and then launch a new instance:
$ lxc launch ubuntu:x
Creating amazed-manatee
Starting amazed-manatee
Find your instance’s IP address:
$ lxc list
+----------------+---------+----------------------+----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+----------------+---------+----------------------+----------------------------------------------+------------+-----------+
| amazed-manatee | RUNNING | 10.163.22.135 (eth0) | fdce:be5e:b787:f7d2:216:3eff:fe1c:773 (eth0) | PERSISTENT | 0 |
+----------------+---------+----------------------+----------------------------------------------+------------+-----------+
And now SSH in!
$ ssh ubuntu@10.163.22.135
$ ssh -6 ubuntu@fdce:be5e:b787:f7d2:216:3eff:fe1c:773
Enjoy!
:-Dustin