add ssh config
This commit is contained in:
37
common.nix
37
common.nix
@@ -265,6 +265,43 @@ isoConfig // {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# SSH key generation for workshop user
|
||||||
|
systemd.services.workshop-ssh-keygen = {
|
||||||
|
description = "Generate SSH key for workshop user for passwordless localhost access";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
path = with pkgs; [ openssh coreutils gnugrep ];
|
||||||
|
script = ''
|
||||||
|
USER_HOME=/home/workshop
|
||||||
|
SSH_DIR=$USER_HOME/.ssh
|
||||||
|
KEY_FILE=$SSH_DIR/id_ed25519
|
||||||
|
AUTH_KEYS_FILE=$SSH_DIR/authorized_keys
|
||||||
|
mkdir -p $SSH_DIR
|
||||||
|
chown workshop:workshop $SSH_DIR
|
||||||
|
chmod 700 $SSH_DIR
|
||||||
|
if [ ! -f "$KEY_FILE" ]; then
|
||||||
|
echo "Generating SSH key for workshop user..."
|
||||||
|
ssh-keygen -t ed25519 -f $KEY_FILE -N "" -C "workshop@workshop-vm"
|
||||||
|
chown workshop:workshop $KEY_FILE $KEY_FILE.pub
|
||||||
|
chmod 600 $KEY_FILE
|
||||||
|
chmod 644 $KEY_FILE.pub
|
||||||
|
fi
|
||||||
|
PUB_KEY=$(cat $KEY_FILE.pub)
|
||||||
|
if ! grep -qF -- "$PUB_KEY" "$AUTH_KEYS_FILE" 2>/dev/null; then
|
||||||
|
echo "Adding public key to authorized_keys..."
|
||||||
|
echo "$PUB_KEY" >> $AUTH_KEYS_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown workshop:workshop $AUTH_KEYS_FILE
|
||||||
|
chmod 600 $AUTH_KEYS_FILE
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services.getty.autologinUser = "workshop";
|
services.getty.autologinUser = "workshop";
|
||||||
security.sudo.wheelNeedsPassword = false;
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user