Авторизация по DSA ключу для чайников, у которых много серверов

Feb 06, 2012 15:25

http://deineka.net
Собственно, генерация ключа разжевана миллионы раз (если лень читать ssh-keygen(1), то можно глянуть тут, например). Далее настает огромная лень - это ж нужно свой id_dsa.pub залить на каждую машинку, вкинуть его в authorized_keys и т.п. В общем, куча ручной работы. Во линуксах есть ssh-copy-id, но не во всех дистрибутивах, как я вижу в своем хозяйстве.

Т.к. собственную лень нужно всячески баловать
написал небольшой скриптец на шелле. Достаточно его и собственный id_dsa.pub (который не секретен, так как публичен) залить какой-нить ресурс - и можно будет ключи распространять чуть ли не на автомате. Подчеркиваю - никакого rocket science, просто быстрый хак на shell. Не забудьте модифицировать под свои условия.

[code]
#!/bin/sh

# Use your own params
TMPFILE=`mktemp /tmp/deineka.XXXXXX` || exit 1
AKEYS=$HOME/.ssh/authorized_keys
URL=http://my-site-or-dropbox.etc/securedir/id_dsa.pub

DetectFetch()
{
if test -x /usr/bin/fetch; then
fetch="/usr/bin/fetch -o "
elif test -x /usr/bin/wget; then
fetch="/usr/bin/wget -O "
elif test -x /usr/bin/curl; then
fetch="/usr/bin/curl -o "
else
echo "ERROR: no fetch program found."
exit 1
fi
}

DetectFetch

echo Fetching key
$fetch $TMPFILE $URL
echo -n Adding to $AKEYS...
if [ ! -d $HOME/.ssh ]; then
mkdir -p $HOME/.ssh
chmod 700 $HOME/.ssh
fi

cat $TMPFILE >> $AKEYS
echo done
chmod 600 $AKEYS
rm -f $TMPFILE
[/code]

Использование простое до неприличия - скачали скрипт, запустили его, удалили его.
p.s. Функцию DetectFetch честно скопировал из инсталлятора продуктов ISPSystem

блог

Previous post Next post
Up