How can non-root user access key when creating Linode via api?
According to api doc:
authorized_users is a list of usernames. If the usernames have associated SSH keys, the keys will be appended to the root users ~/.ssh/authorized_keys file automatically.
I assume I need to append user's key to authorized_keys. How would I then copy this key to the user's .ssh directory so I can login as the user after creating the Linode? I'm using a Stackscript so would it be something like ssh-copy-id?
There are a few different ways you could achieve this. Since your non-root user's authorized_keys file will be empty upon deployment, you could simply copy the root authorized_keys file over and chown to get the desired result:
cp /root/.ssh/authorized_keys /home/$USER/.ssh/authorized_keys chown $USER:$USER /home/$USER/.ssh/authorized_keys
cat /root/.ssh/authorized_keys >> /home/$USER/.ssh/authorized_keys
Since you're using a StackScript you could also use a User Defined Variable to accomplish the same thing without requiring the key to ever exist in root's authorized_keys file.
echo $UDF >> /home/$USER/.ssh/authorized_keys
This difference with this method is that it would require either entering the UDF upon deployment or hard coding it into the StackScript.