В этом деле поможет openssl. Сначала генерируем параметры для dsa-ключей.
openssl dsaparam -out parameters.pem 4096Если, кто-то не знает, то 4096 — это желаемая длина ключей (в битах), которые будут генерироваться при помощи этих параметров, а сами параметры будут записаны (естественно) в файл parameters.pem, который представляет из себя закодированную при помощи base64 двоичную структуру, и снабжённый некой шапкой и антишапкой — всё в соответствии со стандартом PEM (Privacy-enhanced Electronic Mail). Сами же параметры DSA представляют собой три числа. Подробности есть в en.wikipedia.org/wiki/DSA
После того, как сгенерированы параметры, можно генерировать ключ (если, конечно, дождётесь окончания генерации параметров :) а вообще, если вдруг решите это запускать на сотовом телефоне, то запаситесь книгой 'Идеальный Код' — отличный сбоник отличных эссе):
openssl dsa -out key.pem parameters.pemЭтот ключ представляет собой, на деле, два ключа — открытый и закрытый. Если не верите, можете сами посмотреть:
openssl dsa -noout -text < key.pemТеоретически, вы должны увидеть свои DSA-параметры и два небольших числа pub и priv, которые, на самом деле, и будут ключами.
Теперь нужно сделать три дела: (1) объявить созданный ключ вашей(им) identity, (2) вытащить из него в воспринимаемом openssh формате открытый ключ, (3) засунуть этот открытый ключ на целевую машину в authorized_keys. (2) и (3) будут смешаны в одной pipeline.
mv key.pem /home/username/.ssh/identity
chown 600 /home/username/.ssh/identityпоменять права доступа нужно обязательно, ведь, openssh — штука разборчивая, ведь, сам TrueЪ Тео де Раадт проектом руководил;
ssh-keygen -y -f /home/username/.ssh/identity | ssh username@somehost.ssh tee -a .ssh/authorized_keysГотово. Можно теперь оставить для ssh аутентификацию только по ассиметричным ключам, и идти спокойно играть в шахматы не опасаясь весеннего обострения у латвио-индо-китае-русских хакеров.
P.S. Конечно, пользователи PuTTY могут спокойно генерировать длинные DSA-ключи puttygen'ом, но проблема в том, что puttygen для каждого нового DSA-ключа генерирует новые параметры, что напрочь убивает всё приемущество DSA над RSA, которое как раз и состоит (если не брать в расчёт возможность считать на эллиптических кривых) в скорости генерации новых ключей.