SSH Config creation script, readme update
This commit is contained in:
12
ReadMe.md
12
ReadMe.md
@@ -8,6 +8,8 @@ the clone base for one campaign and a simple crontab script to pull data from th
|
|||||||
- base_setup.sh: setup for the folder structure, users, etc
|
- base_setup.sh: setup for the folder structure, users, etc
|
||||||
- new_clone.sh: Basic clone script
|
- new_clone.sh: Basic clone script
|
||||||
- git_sync.sh: The script to run in crontab, to sync the changes
|
- git_sync.sh: The script to run in crontab, to sync the changes
|
||||||
|
- switch_branch.sh: Switch from one branch to the other
|
||||||
|
- create_ssh_config.sh: setup ssh key and ssh config entry
|
||||||
|
|
||||||
## Run commands
|
## Run commands
|
||||||
|
|
||||||
@@ -30,6 +32,14 @@ as is, if the folder exists it will only copy the scripts, will not alter or cha
|
|||||||
|
|
||||||
Planned to get auto fixes for wrong ACL, etc or missing config settings
|
Planned to get auto fixes for wrong ACL, etc or missing config settings
|
||||||
|
|
||||||
|
### SSH Key generation
|
||||||
|
|
||||||
|
A SSH Key has to be generated for each git respository that will be synced and the configuration has to be added to the ssh config file
|
||||||
|
|
||||||
|
```sh
|
||||||
|
create_ssh_config.sh [SSH Key name] [repo url full] ([jump proxy])
|
||||||
|
```
|
||||||
|
|
||||||
### new_clone.sh
|
### new_clone.sh
|
||||||
|
|
||||||
Create a new clone
|
Create a new clone
|
||||||
@@ -38,7 +48,7 @@ Create a new clone
|
|||||||
new_clone.sh [repository] [branch] ([host]) ([remote name])
|
new_clone.sh [repository] [branch] ([host]) ([remote name])
|
||||||
```
|
```
|
||||||
|
|
||||||
The [host] is the SSH Host name entry, this sill repalce any "[host]:" in the [repository]. If the [host] is not set the host set in the [repository] will be used. If nothing found the script will abort
|
The [host] is the SSH Host name entry, this will replace any "[host]:" in the [repository]. If the [host] is not set the host set in the [repository] will be used. If nothing found the script will abort
|
||||||
|
|
||||||
A [branch] name must be set all the time.
|
A [branch] name must be set all the time.
|
||||||
|
|
||||||
|
|||||||
56
src/bin/create_ssh_config.sh
Normal file
56
src/bin/create_ssh_config.sh
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# <s> [SSH Key name] [repo url] ([Jump Proxy])
|
||||||
|
|
||||||
|
# ssh-keygen -t ed25519 -N "" -C "${repo_url}" -f "${ssh_key_name}"
|
||||||
|
|
||||||
|
# CONFIG
|
||||||
|
# Host <Repo name flattened>
|
||||||
|
# Hostname <host name>
|
||||||
|
# User git
|
||||||
|
# IdentityFile ~/.ssh/<pem key name>
|
||||||
|
# [ProxyJump <jump proxy>]
|
||||||
|
|
||||||
|
SSH_KEY_NAME="$1";
|
||||||
|
REPOSITORY="$2";
|
||||||
|
JUMP_PROXY="$3";
|
||||||
|
# below are only to skip error
|
||||||
|
BRANCH="-"
|
||||||
|
|
||||||
|
BASE_FOLDER=$(dirname "$(readlink -f "$0")")"/";
|
||||||
|
# shellcheck source=init.sh
|
||||||
|
. "${BASE_FOLDER}init.sh";
|
||||||
|
|
||||||
|
SSH_CONFIG_BASE="${GIT_WEBHOOK_BASE_FOLDER}.ssh/config/";
|
||||||
|
if [ -f "${SSH_CONFIG_BASE}${SSH_KEY_NAME}.pem" ]; then
|
||||||
|
echo "SSH Key: ${SSH_KEY_NAME} already exists";
|
||||||
|
error=1
|
||||||
|
fi;
|
||||||
|
if [[ "${REPOSITORY}" == *":"* ]]; then
|
||||||
|
REMOTE_HOST=$(echo "${REPOSITORY}" | cut -d ":" -f 1);
|
||||||
|
else
|
||||||
|
echo "[!] Must set a remote host for the repository";
|
||||||
|
error=1;
|
||||||
|
fi;
|
||||||
|
# if we have an ":" in the repository, split by it and replace it with the remote host
|
||||||
|
if [[ "${REPOSITORY}" == *":"* ]]; then
|
||||||
|
REPOSITORY=$(echo "${REPOSITORY}" | cut -d ":" -f 2);
|
||||||
|
fi;
|
||||||
|
GIT_REPOSITORY_NAME=$(basename "${REPOSITORY}" .git);
|
||||||
|
|
||||||
|
if ! grep "Host ${GIT_REPOSITORY_NAME}" "${SSH_CONFIG_BASE}config"; then
|
||||||
|
echo "[!] ssh config for ${GIT_REPOSITORY_NAME} already exists";
|
||||||
|
error=1
|
||||||
|
fi;
|
||||||
|
if [ $error -eq 1 ]; then
|
||||||
|
exit;
|
||||||
|
fi;
|
||||||
|
|
||||||
|
# SUDO_COMMAND= as base
|
||||||
|
# ssh-keygen -t ed25519 -N "" -C "${GIT_REPOSITORY_NAME}" -f "${SSH_CONFIG_BASE}${SSH_KEY_NAME}"
|
||||||
|
# must add ".pem" if key name does not end in .pem
|
||||||
|
# SSH_COMMAND=("${SUDO_COMMAND[@]}" "ssh-keygen" "-t" "ed25519" "-N" "" "-C" "${GIT_REPOSITORY_NAME}" "-f" "${SSH_CONFIG_BASE}${SSH_KEY_NAME}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# __END__
|
||||||
@@ -4,10 +4,13 @@
|
|||||||
# DATE: 2025/6/27
|
# DATE: 2025/6/27
|
||||||
# DESC: create a new basic clone
|
# DESC: create a new basic clone
|
||||||
|
|
||||||
|
# COMMAND: new_clone.sh <Repo.git> <branch> [<host>] [<Repo Target Name>] [<remote name>]
|
||||||
|
|
||||||
REPOSITORY="$1";
|
REPOSITORY="$1";
|
||||||
BRANCH="$2";
|
BRANCH="$2";
|
||||||
REMOTE_HOST="$3";
|
REMOTE_HOST="$3";
|
||||||
REMOTE_NAME="$4";
|
REPOSITORY_FOLDER="$4"
|
||||||
|
REMOTE_NAME="$5";
|
||||||
if [ -z "${REMOTE_NAME}" ]; then
|
if [ -z "${REMOTE_NAME}" ]; then
|
||||||
REMOTE_NAME="origin"
|
REMOTE_NAME="origin"
|
||||||
fi;
|
fi;
|
||||||
@@ -61,7 +64,11 @@ fi;
|
|||||||
unique_id=$(uuidgen | tr -d '-' | head -c 8);
|
unique_id=$(uuidgen | tr -d '-' | head -c 8);
|
||||||
|
|
||||||
# strip .git from the repository path
|
# strip .git from the repository path
|
||||||
GIT_REPOSITORY_NAME=$(basename "${REPOSITORY}" .git);
|
if [ -z "${REPOSITORY_FOLDER}" ]; then
|
||||||
|
GIT_REPOSITORY_NAME=$(basename "${REPOSITORY}" .git);
|
||||||
|
else
|
||||||
|
GIT_REPOSITORY_NAME="${REPOSITORY_FOLDER}";
|
||||||
|
fi;
|
||||||
# log folder target
|
# log folder target
|
||||||
LOG_FILE="${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}${GIT_REPOSITORY_NAME}.log";
|
LOG_FILE="${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}${GIT_REPOSITORY_NAME}.log";
|
||||||
# from the repository get the last path without the .git so we have the target folder
|
# from the repository get the last path without the .git so we have the target folder
|
||||||
|
|||||||
Reference in New Issue
Block a user