Created
September 18, 2023 04:19
-
-
Save filippo-orru/a4dcfc7a68c0b8d35487aa8297e98128 to your computer and use it in GitHub Desktop.
Script to generate a deploy key, save it to the user's .ssh folder and config. It echoes the public key to copy-paste to Github and the command to pull this repo.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Taken from: https://stackoverflow.com/a/68706187/11212830 | |
# This script generates a ssh key for a single repository | |
# and adds a custom configuration to the users (not global) ssh config file, | |
# and outputs the public key for you to copy and paste as the repo deploy key | |
# and outputs the url for you to clone the repo on the machine. | |
# Github docs ref: | |
# https://docs.github.com/en/developers/overview/managing-deploy-keys#using-multiple-repositories-on-one-server | |
# | |
# 1. Add the script to the user account of the machine. The home directory is fine. | |
# 2. Make the script executable by running the following command as the user: | |
# chmod u+x generateDeployKey.sh | |
# 3. Run script like `./generateDeployKey.sh REPO_OWNER_NAME REPO_NAME` Note the space between owner and repo name. Example: | |
# ./generateDeployKey.sh yourname hello_world | |
# If you make a mistake with what you pass in, you can remove change from your ~/.ssh/config file | |
# by deleting the most recent "New Key Generated on...." and deleting the related .pub and private keys | |
# Check if user passed in both parameters | |
if [ -z "$1" ] || [ -z "$2" ] | |
then | |
echo "Make sure to pass in both parameters REPO_OWNER_NAME and REPO_NAME. Example:" | |
echo "./generateDeployKey.sh yourname hello_world" | |
else | |
REPO_OWNER_NAME=$1 | |
REPO_NAME=$2 | |
KEY_PATH=~/.ssh/id_rsa.$REPO_NAME | |
echo "Generating ssh key At ${KEY_PATH}" | |
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa.${REPO_NAME} | |
echo "Your ssh deploy key is:" | |
PUB_KEY_PATH=$KEY_PATH".pub" | |
cat $PUB_KEY_PATH | |
echo "" | |
# Will create config if it does not exist | |
echo "Updating ~/.ssh/config" | |
DATE_TIME=$(date +"%Y-%m-%d at %r") | |
echo " | |
# New Key Generated on $DATE_TIME | |
Host github.com-$REPO_NAME | |
HostName github.com | |
User git | |
IdentityFile $KEY_PATH" >> ~/.ssh/config | |
echo "" | |
echo "Here is your hostname's alias to interact with the repository using SSH:" | |
echo "git clone [email protected]$REPO_NAME:$REPO_OWNER_NAME/$REPO_NAME.git" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment