Preventing overlap with existing ssh configuration hosts.
This commit is contained in:
parent
f77e32f7ee
commit
f257be1378
2 changed files with 11 additions and 10 deletions
15
script/myssh
15
script/myssh
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
SQL_PROXY_HOST="${SQL_PROXY_HOST:-localhost}"
|
SQL_PROXY_HOST="${SQL_PROXY_HOST:-localhost}"
|
||||||
|
SSH_SQL_PROXY_HOST="sqlproxy.${SQL_PROXY_HOST}"
|
||||||
CONNECTION_CACHE="$HOME/.cache/sqlproxy_${SQL_PROXY_HOST}"
|
CONNECTION_CACHE="$HOME/.cache/sqlproxy_${SQL_PROXY_HOST}"
|
||||||
|
|
||||||
HELP="Usage: myssh [ls|connect]\n
|
HELP="Usage: myssh [ls|connect]\n
|
||||||
|
@ -33,7 +34,7 @@ get_template_string() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ssh_status() {
|
ssh_status() {
|
||||||
ssh -O check -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" > /dev/null 2>&1
|
ssh -O check -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}" > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
|
@ -42,14 +43,14 @@ connect() {
|
||||||
if ! ssh_status
|
if ! ssh_status
|
||||||
then
|
then
|
||||||
echo "" > "${CONNECTION_CACHE}"
|
echo "" > "${CONNECTION_CACHE}"
|
||||||
ssh -o "ControlPersist=10m" -M -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" q
|
ssh -o "ControlPersist=10m" -M -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}" q
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnect() {
|
disconnect() {
|
||||||
if ssh_status
|
if ssh_status
|
||||||
then
|
then
|
||||||
ssh -O stop -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" q
|
ssh -O stop -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}" q
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,15 +64,15 @@ port_forward() {
|
||||||
then
|
then
|
||||||
if [ -n "${ACTIVE_HOST}" ]
|
if [ -n "${ACTIVE_HOST}" ]
|
||||||
then
|
then
|
||||||
ssh -O cancel -L "6033:${ACTIVE_HOST}" -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" q
|
ssh -O cancel -L "6033:${ACTIVE_HOST}" -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}" q
|
||||||
fi
|
fi
|
||||||
ssh -O forward -L "6033:$1:$2" -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}"
|
ssh -O forward -L "6033:$1:$2" -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}"
|
||||||
fi
|
fi
|
||||||
echo "$1:$2" > "${CONNECTION_CACHE}"
|
echo "$1:$2" > "${CONNECTION_CACHE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
ls_hosts() {
|
ls_hosts() {
|
||||||
ssh -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" ls
|
ssh -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}" ls
|
||||||
}
|
}
|
||||||
|
|
||||||
get_host() {
|
get_host() {
|
||||||
|
@ -80,7 +81,7 @@ get_host() {
|
||||||
printf 'Please specify the host to connect to.\nRun "myssh ls" to list all available hosts.\n'
|
printf 'Please specify the host to connect to.\nRun "myssh ls" to list all available hosts.\n'
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
TARGET_HOST_DATA=$(ssh -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SQL_PROXY_HOST}" "get $1")
|
TARGET_HOST_DATA=$(ssh -S "${HOME}/.ssh/controlmasters/%r@%h:%p" "${SSH_SQL_PROXY_HOST}" "get $1")
|
||||||
if [ "${TARGET_HOST_DATA}" = '' ]
|
if [ "${TARGET_HOST_DATA}" = '' ]
|
||||||
then
|
then
|
||||||
printf 'No such host: "%s"\n' "$1"
|
printf 'No such host: "%s"\n' "$1"
|
||||||
|
|
6
setup.sh
6
setup.sh
|
@ -89,12 +89,12 @@ setup_sqlproxy() {
|
||||||
HOST_NAME="${HOST_NAME:-localhost}"
|
HOST_NAME="${HOST_NAME:-localhost}"
|
||||||
|
|
||||||
# Check if there is an entry for $HOST_NAME in the users ssh config
|
# Check if there is an entry for $HOST_NAME in the users ssh config
|
||||||
if ! grep -qe "$(printf '^Host %s$' "${HOST_NAME}")" "${HOME}/.ssh/config" 2>/dev/null
|
if ! grep -qe "$(printf '^Host %s$' "sqlproxy.${HOST_NAME}")" "${HOME}/.ssh/config" 2>/dev/null
|
||||||
then
|
then
|
||||||
printf '\nHost %s\n Port 3022\n User sqlproxy\n IdentityFile ~/.ssh/%s' "${HOST_NAME}" "${KEY_NAME}" >> "${HOME}/.ssh/config"
|
printf '\nHost sqlproxy.%s\n HostName %s\n Port 3022\n User sqlproxy\n IdentityFile ~/.ssh/%s' "${HOST_NAME}" "${HOST_NAME}" "${KEY_NAME}" >> "${HOME}/.ssh/config"
|
||||||
else
|
else
|
||||||
printf 'User ssh configuration located in "%s" already has a configuration for host "%s".\nMake sure your configuration matches the following:\n' "${HOME}/.ssh/config" "${HOST_NAME}"
|
printf 'User ssh configuration located in "%s" already has a configuration for host "%s".\nMake sure your configuration matches the following:\n' "${HOME}/.ssh/config" "${HOST_NAME}"
|
||||||
printf '"""\nHost %s\n Port 3022\n User sqlproxy\n IdentityFile ~/.ssh/%s\n"""\n' "${HOST_NAME}" "${KEY_NAME}"
|
printf '"""\nHost sqlproxy.%s\n HostName %s\n Port 3022\n User sqlproxy\n IdentityFile ~/.ssh/%s\n"""\n' "${HOST_NAME}" "${HOST_NAME}" "${KEY_NAME}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if public key is already in the containers authorized_keys file
|
# Check if public key is already in the containers authorized_keys file
|
||||||
|
|
Loading…
Reference in a new issue