T&T0x05. Настройка безпарольной аутентификации в ssh | Часть 1. Linux
Каждый, кто работает с Linux системами удаленно сталкивался с проблемой запоминания множества паролей и постоянного их набора при подключении по ssh протоколу. Избавиться от этой проблеммы позволяет использование идентификации по ключу, который находятся в файле на диске.
Итак, как же этим пользоваться?..
1. Проверяем на сервере наличие в файле sshd_conf (для Debian /etc/ssh/sshd_conf) следующих строк
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
2. Генерируем ключ
$ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa.home -C "vl-desktop"Generating public/private rsa key pair.
где -t = rsa | rsa1 | dsa, rsa в данном случае означает rsa2
-b - количество бит
-f - имя файла
-С - просто комметарий
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Не рекомендуется оставлять passphrase пустой!
Your identification has been saved in /home/admin/.ssh/id_rsa.home.
Your public key has been saved in /home/admin/.ssh/id_rsa.home.pub.
The key fingerprint is:
eb:00:1c:82:40:38:c6:86:7d:d1:ec:d4:a0:3b:f5:9d vl-desktop
The key's randomart image is:
+--[ RSA 4096]----+
| *o .+.o |
|==. ..+ . |
|+...oo. |
| o +.. . . |
| = S E |
| o . |
| . . |
| o |
| . |
+---------------------+
Копируем публичный ключ на сервер
Рекомендованный способ, при котором ключ корректно копируется на сервер и выставляются нужные разрешения
a)
$ssh-copy-id admin@server (по умолчанию ищет id_rsa.pub)
b)
$ ssh-copy-id -i /home/admin/.ssh/id_rsa.home.pub admin@192.168.0.xxx
The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is bb:92:4e:72:84:cf:7a:4c:c3:c4:ac:2e:ac:61:41:a6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.1' (RSA) to the list of known hosts.
admin@192.168.0.110's password:
Now try logging into the machine, with "ssh 'admin@192.168.0.110'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
3. Настраиваем ssh-agent.
3.1. DE, такие как Gnome, запускают ssh-agent при старте сессии.
Если ssh-agent не стартует автоматически, то в файл настроек Вашей командной оболочки
добавляем (подробнее см. http://mah.everybody.org)
SSH_ENV="$HOME/.ssh/enviroment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
3.2. Для OpenBox добавляем в autostart.sh подобную строку
(sleep 5s && ssh-agent) &
3.3. После входа в систему один раз вызываем
ssh-add /home/admin/.ssh/id_rsa.home
$ ssh-add /home/admin/.ssh/id_rsa.home
Enter passphrase for /home/admin/.ssh/id_rsa.home:
Identity added: /home/admin/.ssh/id_rsa.home (/home/admin/.ssh/id_rsa.home)
Все, настройка закончена, теперь можно входить на сервер без пароля.
P.S. Рюшечки.
1. Можно настроить аутьентификацию на различные серверы по различным ключам,
для этого генерируем ключи, после создаем файл ~/.ssh/config примерно такого содержания
Host *.work
IdentityFile ~/.ssh/id_rsa.work
Host *.office
IdentityFile ~/.ssh/id_rsa.office
User toor
Port 64646
В первом случае берется текущий пользователь и порт, заданны по умолчанию.
Во втором - явно указываем параметры подключения.
Инструкции для Windows смотри в следующей заметке.
Настройка безпарольной аутентификации в ssh | Часть 1. Linux is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Рубрика: Tips&Tricks
Авторы: Савченко В.Н.
Опубликовано: 19.03.12 09:37