Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/distrib/utils/embedded/files AWS marketplace does not allow ...



details:   https://anonhg.NetBSD.org/src/rev/05dc6cf2c3d0
branches:  trunk
changeset: 380026:05dc6cf2c3d0
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Thu Jul 01 18:05:45 2021 +0000

description:
AWS marketplace does not allow root ssh logins. Create an ec2-user account
and install the ssh key in that user's home directory instead.

diffstat:

 distrib/utils/embedded/files/ec2_init |  19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diffs (51 lines):

diff -r 42a794834f87 -r 05dc6cf2c3d0 distrib/utils/embedded/files/ec2_init
--- a/distrib/utils/embedded/files/ec2_init     Thu Jul 01 17:32:07 2021 +0000
+++ b/distrib/utils/embedded/files/ec2_init     Thu Jul 01 18:05:45 2021 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: ec2_init,v 1.1 2018/11/30 20:53:02 jmcneill Exp $
+# $NetBSD: ec2_init,v 1.2 2021/07/01 18:05:45 jmcneill Exp $
 #
 # PROVIDE: ec2_init
 # REQUIRE: NETWORKING
@@ -13,24 +13,37 @@ rcvar=${name}
 start_cmd="ec2_init"
 stop_cmd=":"
 
+EC2_USER="ec2-user"
 METADATA_URL="http://169.254.169.254/latest/meta-data/";
 SSH_KEY_URL="public-keys/0/openssh-key"
 HOSTNAME_URL="hostname"
 
-SSH_KEY_FILE="/root/.ssh/authorized_keys"
+SSH_KEY_FILE="/home/${EC2_USER}/.ssh/authorized_keys"
+
+ec2_newuser()
+{
+       echo "Creating EC2 user account ${EC2_USER}"
+       useradd -g users -G wheel,operator -m "${EC2_USER}"
+}
 
 ec2_init()
 {
        (
        umask 022
+
+       # create EC2 user
+       id "${EC2_USER}" >/dev/null 2>&1 || ec2_newuser
+
        # fetch the key pair from Amazon Web Services
        EC2_SSH_KEY=$(ftp -o - "${METADATA_URL}${SSH_KEY_URL}")
 
        if [ -n "$EC2_SSH_KEY" ]; then
                # A key pair is associated with this instance, add it
-               # to root 'authorized_keys' file
+               # to EC2_USER's 'authorized_keys' file
                mkdir -p $(dirname "$SSH_KEY_FILE")
+               chown "${EC2_USER}:users" $(dirname "$SSH_KEY_FILE")
                touch "$SSH_KEY_FILE"
+               chown "${EC2_USER}:users" "$SSH_KEY_FILE"
                cd $(dirname "$SSH_KEY_FILE")
 
                grep -q "$EC2_SSH_KEY" "$SSH_KEY_FILE"



Home | Main Index | Thread Index | Old Index