diff options
author | eadler <eadler@FreeBSD.org> | 2014-03-08 03:54:49 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2014-03-08 03:54:49 +0000 |
commit | 9ccdbaa5351837ba0667f036a3c06777e6d79393 (patch) | |
tree | 9501aa966460bf8e657ef05080d6fd03022eafd2 /usr.bin/ssh-copy-id | |
parent | a48226bb43e9672e8f4d5955b8c15cabdfbd1756 (diff) | |
download | FreeBSD-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/ssh-copy-id')
-rw-r--r-- | usr.bin/ssh-copy-id/ssh-copy-id.1 | 11 | ||||
-rwxr-xr-x | usr.bin/ssh-copy-id/ssh-copy-id.sh | 14 |
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 ;; |