From de309da656328f34db5e04c6dd82602ae6d10e15 Mon Sep 17 00:00:00 2001 From: "Lockszmith (@VAST)" Date: Wed, 5 Mar 2025 14:33:41 -0500 Subject: [PATCH] move auto-copy-ssh-id to posix --- .../bin/executable_auto-copy-ssh-id | 42 +------------------ .../bin/executable_auto-copy-ssh-id | 41 ++++++++++++++++++ 2 files changed, 42 insertions(+), 41 deletions(-) mode change 100644 => 120000 _home.macos/private_dot_local/bin/executable_auto-copy-ssh-id create mode 100644 _src.posix/private_dot_local/bin/executable_auto-copy-ssh-id diff --git a/_home.macos/private_dot_local/bin/executable_auto-copy-ssh-id b/_home.macos/private_dot_local/bin/executable_auto-copy-ssh-id deleted file mode 100644 index f5fa695..0000000 --- a/_home.macos/private_dot_local/bin/executable_auto-copy-ssh-id +++ /dev/null @@ -1,41 +0,0 @@ -#! /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 - diff --git a/_home.macos/private_dot_local/bin/executable_auto-copy-ssh-id b/_home.macos/private_dot_local/bin/executable_auto-copy-ssh-id new file mode 120000 index 0000000..c54d6f6 --- /dev/null +++ b/_home.macos/private_dot_local/bin/executable_auto-copy-ssh-id @@ -0,0 +1 @@ +../../../_src.posix/private_dot_local/bin/executable_auto-copy-ssh-id \ No newline at end of file diff --git a/_src.posix/private_dot_local/bin/executable_auto-copy-ssh-id b/_src.posix/private_dot_local/bin/executable_auto-copy-ssh-id new file mode 100644 index 0000000..f5fa695 --- /dev/null +++ b/_src.posix/private_dot_local/bin/executable_auto-copy-ssh-id @@ -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 +