|
Lines 59-65
fi
Link Here
|
| 59 |
DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1) |
59 |
DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1) |
| 60 |
|
60 |
|
| 61 |
usage () { |
61 |
usage () { |
| 62 |
printf 'Usage: %s [-h|-?|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname\n' "$0" >&2 |
62 |
printf 'Usage: %s [-h|-?|-l|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname\n' "$0" >&2 |
| 63 |
exit 1 |
63 |
exit 1 |
| 64 |
} |
64 |
} |
| 65 |
|
65 |
|
|
Lines 77-83
use_id_file() {
Link Here
|
| 77 |
PUB_ID_FILE="$L_ID_FILE.pub" |
77 |
PUB_ID_FILE="$L_ID_FILE.pub" |
| 78 |
fi |
78 |
fi |
| 79 |
|
79 |
|
| 80 |
PRIV_ID_FILE=$(dirname "$PUB_ID_FILE")/$(basename "$PUB_ID_FILE" .pub) |
80 |
[ "$LEGACY" ] || PRIV_ID_FILE=$(dirname "$PUB_ID_FILE")/$(basename "$PUB_ID_FILE" .pub) |
| 81 |
|
81 |
|
| 82 |
# check that the files are readable |
82 |
# check that the files are readable |
| 83 |
for f in $PUB_ID_FILE $PRIV_ID_FILE ; do |
83 |
for f in $PUB_ID_FILE $PRIV_ID_FILE ; do |
|
Lines 121-126
do
Link Here
|
| 121 |
} |
121 |
} |
| 122 |
shift |
122 |
shift |
| 123 |
;; |
123 |
;; |
|
|
124 |
-l) |
| 125 |
OPT="$1" |
| 126 |
OPTARG= |
| 127 |
shift |
| 128 |
;; |
| 124 |
-n|-h|-\?) |
129 |
-n|-h|-\?) |
| 125 |
OPT="$1" |
130 |
OPT="$1" |
| 126 |
OPTARG= |
131 |
OPTARG= |
|
Lines 154-159
do
Link Here
|
| 154 |
-o|-p) |
159 |
-o|-p) |
| 155 |
SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }$OPT '$(quote "$OPTARG")'" |
160 |
SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }$OPT '$(quote "$OPTARG")'" |
| 156 |
;; |
161 |
;; |
|
|
162 |
-l) |
| 163 |
LEGACY=1 |
| 164 |
;; |
| 157 |
-n) |
165 |
-n) |
| 158 |
DRY_RUN=1 |
166 |
DRY_RUN=1 |
| 159 |
;; |
167 |
;; |
|
Lines 243-249
populate_new_ids() {
Link Here
|
| 243 |
printf '%s: INFO: %d key(s) remain to be installed -- if you are prompted now it is to install the new keys\n' "$0" "$(printf '%s\n' "$NEW_IDS" | wc -l)" >&2 |
251 |
printf '%s: INFO: %d key(s) remain to be installed -- if you are prompted now it is to install the new keys\n' "$0" "$(printf '%s\n' "$NEW_IDS" | wc -l)" >&2 |
| 244 |
} |
252 |
} |
| 245 |
|
253 |
|
| 246 |
REMOTE_VERSION=$(ssh -v -o PreferredAuthentications=',' "$@" 2>&1 | |
254 |
[ "$LEGACY" ] || REMOTE_VERSION=$(ssh -v -o PreferredAuthentications=',' "$@" 2>&1 | |
| 247 |
sed -ne 's/.*remote software version //p') |
255 |
sed -ne 's/.*remote software version //p') |
| 248 |
|
256 |
|
| 249 |
case "$REMOTE_VERSION" in |
257 |
case "$REMOTE_VERSION" in |
|
Lines 268-274
case "$REMOTE_VERSION" in
Link Here
|
| 268 |
;; |
276 |
;; |
| 269 |
*) |
277 |
*) |
| 270 |
# Assuming that the remote host treats ~/.ssh/authorized_keys as one might expect |
278 |
# Assuming that the remote host treats ~/.ssh/authorized_keys as one might expect |
| 271 |
populate_new_ids 0 |
279 |
if [ "$LEGACY" ]; then |
|
|
280 |
NEW_IDS=`eval "$GET_ID"` |
| 281 |
else |
| 282 |
populate_new_ids 0 |
| 283 |
fi |
| 272 |
[ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | ssh "$@" " |
284 |
[ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | ssh "$@" " |
| 273 |
umask 077 ; |
285 |
umask 077 ; |
| 274 |
mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ; |
286 |
mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ; |