ssh-copy-id: avoid sending private keys; add -v option

To help avoid confusion: when attempting to send a key file check to see if a
file of the same name exists with a '.pub' suffix and send that instead.  This
mimics the behavior of other ssh-copy-id scripts.

Add -v passthrough.

Reported by:	dweimer <dweimer@dweimer.net>
Reported by:	feld
MFC After:	1 week
This commit is contained in:
eadler 2014-03-01 03:17:46 +00:00
parent f1be80c4cf
commit 74725c830c
2 changed files with 16 additions and 6 deletions

View File

@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd November 11, 2012
.Dd Feburary 28, 2014
.Dt SSH-COPY-ID 1
.Os
.Sh NAME
@ -33,7 +33,7 @@
.Nd copy public keys to a remote host
.Sh SYNOPSIS
.Nm
.Op Fl l
.Op Fl lv
.Op Fl i Ar keyfile
.Op Fl o Ar option
.Op Fl p Ar port
@ -48,12 +48,14 @@ file (creating the file and directory, if required).
The following options are available:
.Bl -tag -width indent
.It Fl i Ar file
Copy the key contained in
Copy the public key contained in
.Ar file .
This option can be specified multiple times and can be combined with
the
.Fl l
option.
If a private key is specified and a public key is found then the public key
will be used.
.It Fl l
Copy the keys currently held by
.Xr ssh-agent 1 .
@ -67,6 +69,9 @@ This option can be specified multiple times.
.It Fl p Ar port
Connect to the specified port on the remote host instead of the
default.
.It Fl v
Pass -v to
.Xr ssh 1 .
.El
.Pp
The remaining arguments are a list of remote hosts to connect to,

View File

@ -28,7 +28,7 @@
# $FreeBSD$
usage() {
echo "usage: ssh-copy-id [-l] [-i keyfile] [-o option] [-p port] [user@]hostname" >&2
echo "usage: ssh-copy-id [-lv] [-i keyfile] [-o option] [-p port] [user@]hostname" >&2
exit 1
}
@ -64,11 +64,13 @@ options=""
IFS=$nl
while getopts 'i:lo:p:' arg; do
while getopts 'i:lo:p:v' arg; do
case $arg in
i)
hasarg="x"
if [ -r "$OPTARG" ]; then
if [ -r "${OPTARG}.pub" ]; then
keys="$(cat -- "${OPTARG}.pub")$nl$keys"
elif [ -r "$OPTARG" ]; then
keys="$(cat -- "$OPTARG")$nl$keys"
else
echo "File $OPTARG not found" >&2
@ -85,6 +87,9 @@ while getopts 'i:lo:p:' arg; do
o)
options=$options$nl-o$nl$OPTARG
;;
v)
options="$options$nl-v"
;;
*)
usage
;;