Ssh через ключи DSA

Материал из rrv-wiki
Перейти к навигации Перейти к поиску

Лучше использовать RSA

Подключения по ssh с использованием ключей dsa(rsa) позволяет либо усилить парольную защиту либо подключатся совсем без пароля используя лишь защиту ключами dsa либо rsa.
Создадим ключ dsa, для этого на компьютере с которого будем подключатся на удаленные сервера выполним:

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_dsa.
Your public key has been saved in /home/test/.ssh/id_dsa.pub.

Если требуется пароль, то указываем его. в результате получим два файла id_dsa и id_dsa.pub

Копируем файл id_dsa.pub на сервер к которому собираемся подключатся (например r-info.net):

$ scp /home/test/.ssh/id_dsa.pub test@r-info.net:/home/test/.ssh/

Теперь подключаемся к удаленному серверу и переименовываем на нем файл /home/test/.ssh/id_dsa.pub в /home/test/.ssh/authorized_keys2
Отключаемся от удаленного сервера.

На компьютере с которого будем подключатся на удаленные сервера настроим файл конфигурации ssh для подключению к серверу например r-info.net, создадим файл ~/.ssh/config :

Host r-info.net
User test
Protocol 2
IdentityFile /home/test/.ssh/id_dsa

Все,теперь можно входить:

$ ssh test@r-info.net

Теперь если нам надо каким то образом ограничить пользователя подключаемого по ключу, то меняем строчку public ключа в файле /home/test/.ssh/authorized_keys2 на удаленном сервере, примеры:
Ограничиваем вход только с ip-адреса 192.168.0.2:

from="192.168.0.2, !*" ssh-dss AAAA……………….NDw2Jg==

Запрет туннелей:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss AAAA……………….NDw2Jg==

Запрет консоли (не мешает выполнять команды прямо в запросе ssh):

no-pty ssh-dss AAAA……………….NDw2Jg==

Запускает конкретную команду при входе в купе с no-pty позволяет сильно ограничить пользователя, позволив лишь создавать туннели:

command="/bin/cat" ssh-dss AAAA……………….NDw2Jg==

Разрешение туннелирования только на определенный ip и порт:

permitopen="192.168.0.120:80" ssh-dss AAAA……………….NDw2Jg==

Если требуется туннелировать несколько ip:port можно указать их через запятую, например так:

permitopen="192.168.0.120:80",permitopen="192.168.0.150:22" ssh-dss AAAA……………….NDw2Jg==

Все вместе для создания туннеля:

command="/bin/cat",permitopen="192.168.0.120:80",no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAA……………….NDw2Jg=

Для backup-а например с помощью rsync:

from="192.168.0.2, !*",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAA……………….NDw2Jg==