ssh-copy-id is just a shell script, so you can put the "-p " in the script where the "ssh $1" line is, change to "ssh -p <alternateport> $1"
I would recommend copying the system one to your home directory and modifying that instead of modifying the installed one directly.
Here is modified example using a variable at the top of the script (named SSH) you can modify easily to add whatever ssh options you want. In your case, replace PORTNUM with the port you are interested in:
#!/bin/sh
# Shell script to install your public key on a remote machine
# Takes the remote machine name as an argument.
# Obviously, the remote machine must accept password authentication,
# or one of the other keys in your ssh-agent, for this to work.
ID_FILE="${HOME}/.ssh/id_rsa.pub"
SSH="/usr/bin/ssh -p PORTNUM"
if [ "-i" = "$1" ]; then
shift
# check if we have 2 parameters left, if so the first is the new ID file
if [ -n "$2" ]; then
if expr "$1" : ".*\.pub" > /dev/null ; then
ID_FILE="$1"
else
ID_FILE="$1.pub"
fi
shift # and this should leave $1 as the target name
fi
else
if [ x$SSH_AUTH_SOCK != x ] ; then
GET_ID="$GET_ID ssh-add -L"
fi
fi
if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then
GET_ID="cat ${ID_FILE}"
fi
if [ -z "`eval $GET_ID`" ]; then
echo "$0: ERROR: No identities found" >&2
exit 1
fi
if [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2
exit 1
fi
{ eval "$GET_ID" ; } | ${SSH} $1 "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys; test -x /sbin/restorecon && /sbin/restorecon .ssh .ssh/authorized_keys" || exit 1
cat <<EOF
Now try logging into the machine, with "ssh '$1'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
EOF
ssh-copy-id is just a shell script, so you can put the "-p " in the script where the "
ssh $1
" line is, change to "ssh -p <alternateport> $1
"I would recommend copying the system one to your home directory and modifying that instead of modifying the installed one directly.
Here is modified example using a variable at the top of the script (named SSH) you can modify easily to add whatever ssh options you want. In your case, replace PORTNUM with the port you are interested in:
Create a config-file for ssh, it has to be ~/.ssh/config and add the following lines to the file.
If you then do a "ssh-copy-id -i ... " it will work.
I found that you can also pass the ssh command to the original script like so:
So you quote the part that gets passed to ssh as the host url and the ssh program picks up the port argument.