This was inspired by this:
https://github.com/openssh/openssh-portable/pull/321
but I thought that it was better to not do the sed patching.
BTW the reason one can get away with using $SSH_OPTS throughout, despite
the lowercase -p in there, even if sftp is in use, is that the sftp call
is using the already-established ssh master connection, so the port was
passed to the earlier ssh.
SSH-Copy-ID-Upstream:
1c124d9bfafdbe28a00b683367ebf5750ce12eb2
SEEN_OPT_I="yes"
use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}"
;;
- o|p|F)
+ o|F)
SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }-$OPT '$(quote "${OPTARG}")'"
;;
f)
n)
DRY_RUN=1
;;
+ p)
+ SSH_PORT=${OPTARG}
+ ;;
s)
SFTP=sftp
;;
USER_HOST="$*"
# tack the hostname onto SSH_OPTS
-SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }'$(quote "$USER_HOST")'"
+SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }${SSH_PORT:+-p $SSH_PORT }'$(quote "$USER_HOST")'"
# and populate "$@" for later use (only way to get proper quoting of options)
eval set -- "$SSH_OPTS"
=-=-=-=-=-=-=-=
EOF
else
+ [ -z "$SFTP" ] || PORT_OPT=P
cat <<-EOF
Number of key(s) added: $ADDED
- Now try logging into the machine, with: "${SFTP:-ssh} $SSH_OPTS"
+ Now try logging into the machine, with: "${SFTP:-ssh}${SSH_PORT:+ -${PORT_OPT:-p} '$SSH_PORT'} ${SSH_OPTS}"
and check to make sure that only the key(s) you wanted were added.
EOF