пятница, 21 марта 2008 г.

Настройка безпарольной аутентификации с вашим ssh аккаунтом

Если у вас имеется ssh доступ к какому либо серверу и вы не в курсе про ключи, то очевидно вам приходится часто имя и пароль. Это весьма утомительно и мешает автоматизировать многие вещи, например синхронизация заметок Tomboy, налаживание работы синхронизирующего/бекапящего скрипта или запуск X приложение (об этом позже). В общем если вы устали от этой рутины то пора завести ключи :)
Вся задача разбивается на 3 части, генерация ключа, установка его на сервере и настройка рабочей среды

1. генерация ключа
bsdhost% ssh-keygen -t dsa -b 2048
Generating public/private dsa key pair.
Enter file in which to save the key (/home/ffsdmad/.ssh/id_dsa):# соглашаемся с путём по умолчанию
Enter passphrase (empty for no passphrase): # вводим секретное слово
Enter same passphrase again: # вводим секретное слово 2 раз
Your identification has been saved in .
Your public key has been saved in .pub.
The key fingerprint is:
1f:48:47:b2:d1:a1:8a:fd:b4:5f:12:46:93:0a:f4:27 ffsdmad@bsdhost
bsdhost%
теперь в папке $HOME/.ssh/ мы имеет 2 файла-ключа, секретный - id_dsa и открытый - id_dsa.pub

2. добавление ключа на сервер
необходимо добавить содержимое файла $HOME/.ssh/id_dsa.pub с локального компьютера
в файл $HOME/.ssh/authorized_keys удалённого хостинга
bsdhost% ssh ffsdmad@ffserver
scp ffsdmad@bsdhost:~/.ssh/id_dsa.pub ~/tmp.id
Password:
id_dsa.pub 100% 1117 1.1KB/s 00:00
ffserver:~>
ffserver:~> cat ~/tmp.id >> .ssh/authorized_keys
ffserver:~> rm ~/tmp.id
ffserver:~> exit
Всё, теперь сервер должен узнавать нас не только по паролю, но и ключам, проверям:
bsdhost% ssh ffserver
Enter passphrase for key '/home/ffsdmad/.ssh/id_dsa': # здесь требуется ввести ключевое слово, заданное при создании ключа
ffserver:~>

3. настройка среды для удобного использования
Мы получили безпарольную систему входа на сервер удалённого хостинга.
Но хрен редьки не слаше, ведь нам приходится вводить ключевое слово,
чтобы избежать этого необходимо проделать следующее:
а. поправить конфиг пользователя (для Ubuntu не требуется)
б. пере/залогиниться по новой (для Ubuntu не требуется)
в. добавить ключь агенту авторизации

а. добавляем в файл ~/.tcshrc следующий текст:

if ( $?SSH_AGENT_PID == 0 && $?SSH_AUTH_SOCK == 0 )then
eval `ssh-agent -c`# для tcsh -c, для bash -s
else
# тут можно прибивать агента при каждом входе пользователя в терминал
# echo "kill current ssh-agent"
# ssh-agent -k
# echo "start ssh-agent"
# eval `ssh-agent -c`
endif
этот код будет проверять запушен ли агент авторизации, если нет, то будет запускать и настраивать среду
б. exit
в. bsdhost:~> ssh-add
Enter passphrase for /home/ffsdmad/.ssh/id_dsa:
Identity added: /home/ffsdmad/.ssh/id_dsa (/home/ffsdmad/.ssh/id_dsa)
bsdhost:~>
проверяем кривость рук
bsdhost:~> ssh ffserver
Welcome to FreeBSD!
запускается ssh-agent
Agent pid 13178
ffserver:~>

Всё, мы имеем безпарольный вход на удалённый хостинг. Теперь до следующего входа в систему нет нужды вводить пароль и возможности вашего компьютера увеличились за счёт возможностей сервера, но об этом после :)

1 комментарий:

Анонимный комментирует...

Да уж. По поводу коментариев - навеяла на меня где-то услышанная фраза:
Душа требует шампанского и ананас. А организм водки и огурчик.