Ssh через ключи DSA
Лучше использовать 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==