summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authoreadler <eadler@FreeBSD.org>2014-03-08 03:54:49 +0000
committereadler <eadler@FreeBSD.org>2014-03-08 03:54:49 +0000
commit9ccdbaa5351837ba0667f036a3c06777e6d79393 (patch)
tree9501aa966460bf8e657ef05080d6fd03022eafd2 /usr.bin
parenta48226bb43e9672e8f4d5955b8c15cabdfbd1756 (diff)
downloadFreeBSD-src-9ccdbaa5351837ba0667f036a3c06777e6d79393.zip
FreeBSD-src-9ccdbaa5351837ba0667f036a3c06777e6d79393.tar.gz
MFC r262645,r262647:
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. ssh-copy-id: add restorecon call In certain situations when creating an authorized_key file on a Linux machine restorecon(1) may need to be called. Therefore, attempt to run it if it exists.
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/ssh-copy-id/ssh-copy-id.111
-rwxr-xr-xusr.bin/ssh-copy-id/ssh-copy-id.sh14
2 files changed, 19 insertions, 6 deletions
diff --git a/usr.bin/ssh-copy-id/ssh-copy-id.1 b/usr.bin/ssh-copy-id/ssh-copy-id.1
index 2c95d5a..b22c323 100644
--- a/usr.bin/ssh-copy-id/ssh-copy-id.1
+++ b/usr.bin/ssh-copy-id/ssh-copy-id.1
@@ -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,
diff --git a/usr.bin/ssh-copy-id/ssh-copy-id.sh b/usr.bin/ssh-copy-id/ssh-copy-id.sh
index 94429de..e16cfaa 100755
--- a/usr.bin/ssh-copy-id/ssh-copy-id.sh
+++ b/usr.bin/ssh-copy-id/ssh-copy-id.sh
@@ -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
}
@@ -46,6 +46,9 @@ sendkey() {
printf "$alg $key $comment\n" >> "$keyfile" ; \
fi ; \
done \
+ if [ -x /sbin/restorecon ]; then \
+ /sbin/restorecon -F "$HOME/.ssh/" "$keyfile" >/dev/null 2>&1 || true ; \
+ fi
'\'
}
@@ -64,11 +67,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 +90,9 @@ while getopts 'i:lo:p:' arg; do
o)
options=$options$nl-o$nl$OPTARG
;;
+ v)
+ options="$options$nl-v"
+ ;;
*)
usage
;;
OpenPOWER on IntegriCloud