add auto-copy-ssh-id script
This commit is contained in:
parent
a9d10b7615
commit
1126478f41
|
@ -0,0 +1,41 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
REMOTE_HOST=("${@:--}")
|
||||||
|
|
||||||
|
if [[ "${#REMOTE_HOST}" -eq 1 && "${REMOTE_HOST[0]}" == '-' ]]; then
|
||||||
|
read -a REMOTE_HOST
|
||||||
|
fi
|
||||||
|
|
||||||
|
ssh_do() {
|
||||||
|
local USER="${1}" HOST="${2:?}"
|
||||||
|
# BLINDLY Trust host keys ( https://stackoverflow.com/a/74410573/799379 )
|
||||||
|
[ 1 -eq "${NO_REFRESH}" ] || (
|
||||||
|
ssh-keygen -F "$HOST" &>/dev/null && ssh-keygen -R "$HOST" &>/dev/null
|
||||||
|
)
|
||||||
|
ssh-keygen -F "$HOST" &>/dev/null || (
|
||||||
|
ssh-keyscan -Ht ed25519 "$HOST" || ssh-keyscan -H "$HOST"
|
||||||
|
) | grep -v '^#' >> "$HOME/.ssh/known_hosts"
|
||||||
|
|
||||||
|
SSH_ASKPASS_REQUIRE=never \
|
||||||
|
ssh \
|
||||||
|
-o PasswordAuthentication=no \
|
||||||
|
-o LogLevel=ERROR \
|
||||||
|
-o BatchMode \
|
||||||
|
-o ConnectionTimeout=2 \
|
||||||
|
-ttn \
|
||||||
|
"${USER:+${USER}@}${HOST}" -- "${@:3}" \
|
||||||
|
|| (printf '\n'; printf 'Exit code: %s\n' "$?" >&2)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _host in "${REMOTE_HOST[@]}"; do
|
||||||
|
printf '%-40s: ' "$_host"
|
||||||
|
if ssh_do "" "$_host" hostname &>/dev/null; then
|
||||||
|
echo "ready"
|
||||||
|
else
|
||||||
|
printf 'Attempting to copy SSH key...\n\n'
|
||||||
|
ssh-copy-id "$_host"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
Loading…
Reference in New Issue