Как и многие другие юзвери, я достаточно ленив для того, чтобы при каждом чихе вводить пароли. Особенно если приходится по сто раз за сеанс подключаться к серверам по SSH - это, мягко говоря, утомляет.
Технология добавления ключей в агента уже рассмотрена вдоль и поперек в сотне различных документов, но почти все они не устраивали меня: мне лень вводить пароль к ключам при входе в сеанс - если запускать ssh-add автоматически, или не забыть запустить его при первой попытке входа по ssh, чтобы потом об этом не задумываться...
В общем, я решил автоматизировать свою заморочку, и хочу поделиться своим вариантом решения этой проблемы. Так что бейте ногами, критикуйте, улучшайте :)
Пишем вот такой скриптик:
#!/bin/sh
if [ "x$1" == "x" ] ; then
echo Usage: ssh.sh HOST
exit 1
fi
ssh-add -l > /dev/null
if [ $? -eq 1 ] ; then
ssh-add
if [ $? -eq 1 ] ; then
exit 2
fi
fi
/usr/bin/ssh $1
Технология добавления ключей в агента уже рассмотрена вдоль и поперек в сотне различных документов, но почти все они не устраивали меня: мне лень вводить пароль к ключам при входе в сеанс - если запускать ssh-add автоматически, или не забыть запустить его при первой попытке входа по ssh, чтобы потом об этом не задумываться...
В общем, я решил автоматизировать свою заморочку, и хочу поделиться своим вариантом решения этой проблемы. Так что бейте ногами, критикуйте, улучшайте :)
Пишем вот такой скриптик:
#!/bin/sh
if [ "x$1" == "x" ] ; then
echo Usage: ssh.sh HOST
exit 1
fi
ssh-add -l > /dev/null
if [ $? -eq 1 ] ; then
ssh-add
if [ $? -eq 1 ] ; then
exit 2
fi
fi
/usr/bin/ssh $1
Пояснять в деталях, что и откуда взялось, сейчас некогда, так что если будут вопросы - в каменты, по возможности отвечу.
Далее, этот скрипт под именем ssh.sh я сохранил в папке ~/.ssh (не забыв дать ему права на запуск), а потом создал алиас для его запуска:
# добавил следующую строку в ~/.bashrc
alias ssh='$HOME/.ssh/ssh.sh'
Что мы теперь имеем? При попытке обычного вызова ssh myhost.com (вход в который реализован по пабик ключу) произойдет проверка принципиального наличия ключей в агенте. Если ключи еще не были подгружены, код завершения будет равен 1. В этом случае добавляем ключи в агент. При ошибке в пароле код завершения также будет равен 1, что позволяет завершить скрипт без головной боли. Если же все в порядке - ключи преспокойно добавляются в агент, после чего благополучно запускается ssh с указанием выбранного хоста.
Можно было выводить какое-нибудь осмысленное сообщение об ошибке, но мне это показалось излишним. Также я не реализовывал передачу дополнительных ключей в ssh, но для моих целей в этом нет необходимости. В любом случае, этот вариант решения задачи наверняка можно расширить под Ваши нужды.
That's all, folks!
Комментариев нет:
Отправить комментарий