RSS
 

Archive for февраля 6, 2012

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

06 Feb

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

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

#!/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

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

 
 

Switch to our mobile site