пятница, 28 августа 2009 г.

ssh без пароля под linux и windows

Аутентификация по RSA ключам - удобная штука. Рассмотрим 2 варианта. Unix клиент - Unix сервер и Windows клиент - Unix сервер. На сервере должен быть поднят sshd. Файл конфигурации:
/etc/ssh/sshd_config
Protocol 2
Port 22
ListenAddress ::
AllowTcpForwarding no
GatewayPorts no
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
PrintMotd no
KeepAlive yes
SyslogFacility auth
LogLevel info
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 768
KeyRegenerationInterval 3600
StrictModes yes
LoginGraceTime 600
MaxAuthTries 6
MaxAuthTriesLog 3
PermitEmptyPasswords no
PasswordAuthentication yes
PAMAuthenticationViaKBDInt yes
PermitRootLogin no
Subsystem sftp /usr/lib/ssh/sftp-server
IgnoreRhosts yes
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes

Для того, чтобы подключиться с одной Unix машины на другую делаем следующее. На клиенте (с которой будем заходить) генерим пару ключей private/public.

om@rnd1 # ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in //.ssh/id_rsa.
Your public key has been saved in //.ssh/id_rsa.pub.
The key fingerprint is:
14:fb:6d:ed:4b:af:d2:86:d3:e8:e7:50:4e:51:55:1b root@rnd1

Далее заходим на сервер (к которому будем подключаться) под пользователем om (к примеру). Наша цель - получить беспарольную аутентификация для пользователя om. В папке пользователя есть директория .ssh. Cоздаём в ней файл authorized_keys.

bash-2.05$ pwd
/export/home/om
bash-2.05$ cd .ssh/
bash-2.05$ touch authorized_keys

Вставляем в него public ключ. В результате получаем файл:
bash-2.05$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAnsRA4X58e33MBxU3iSiVjjB91x4tLyTlbr90Qk5RoZMnaejnEjKfxaCzKLhBR6MOViugjJe6sXhpuCOeBu1LYL2IyIkSrm+Q/NfDgNWnXkHZWLx9COmtQ0+sqrwxwjiJf1yuyuGXUy3DpUX5f9/M2BUfQXP7389NjK3YiQWSluc= om@rnd1

Проверяем. На машине клиенте:
root@rnd1 # ssh -l om 10.10.0.165
Last login: Sat Aug 29 10:34:13 2009 from 10.10.0.179
Sun Microsystems Inc. SunOS 5.9 Generic May 2002
bash-2.05$

Готово.

Теперь для Windows. Я пользуюсь ssh клиентом putty. На мой взгляд самая удобная прога. Ходят слухи, что она некорректно работает с serial портом, но я такого не замечал. Для того, чтобы сгенерить пару ключей нам понадобится программа puttygen.exe. Гуглим, качаем, ставим.

Для того, чтобы сгенерился ключ нужно поводить мишой по окну программы для генерации random.


Система таже самая. public ключ прописываем на Unix сервере, на который будем заходить без пароля. В папке пользователя заходим в .ssh, в ней создаем authorized_keys. Вставляем строчку с public ключем.
Теперь создаём сессию в putty. Вбиваем ip адрес сервера или доменное имя. Заполняем имя пользователя в Session - Connection - Data (Auto-login username). Далее Session - Connection - SSH - Auth в поле Authentication parameters ставим галку на Allow agent forwarding. Ниже в поле Key грузим наш public ключ. Не забываем сохранить сессию. Проверяем.

Using username "om".
Authenticating with public key "rsa-key-20090828"
Last login: Fri Aug 28 15:26:14 2009 from 10.10.0.101
bash-2.05$ id
uid=1001(om) gid=1(other)
bash-2.05$

Вот так.

Комментариев нет:

Отправить комментарий