Сохранение паролей от ssh ключей между сессиями
Модератор: /dev/random
-
kodx
- Сообщения: 7
- ОС: Linux
Сохранение паролей от ssh ключей между сессиями
Есть проблема, которую хотелось бы решить.
Есть много ssh ключей(пока их 10 штук), у каждого ключа свой пароль. Недавно перешел на Debian Squeeze с Ubuntu и встала такая проблема.
В Ubuntu я использовал Gnome и там была связка программ gnome-keyring-daemon + seahorse-agent, которые отвечали за хранение паролей. Насколько я смог разобраться, gnome-keyring-daemon в качестве главного пароля использовал пароль для входа пользователя в систему.
Теперь я попробовал воспроизвести тоже самое, но на Debian Squeeze и без gnome-session, а на простом openbox, поправил некоторые баги этого демона (он не экспортирует переменные окружения при запуске и остальное), но мне так и не удалось добиться того, чтобы этот демон один раз спросил пароль от ключа и запомнил его навсегда, т.е. после перезагрузки компьютера - он снова спрашивает. Я был бы рад переводить компьютер в режим suspend, но в Squeeze эта функциональность просто не работает (они там что-то сломали, даже пакет uswsusp убрали из репа).
Что хотелось бы:
- В идеале: консольная тулза, которая умела бы запоминать пароли для ключей и хранить их между перезагрузками, потому что вводить 10 разных паролей по 20 символов длиной каждый день уж очень утомительно. Т.е. чтобы она один раз спросила эти пароли и запомнила навсегда, и хранили бы у себя какой-нибудь зашифрованный кеш паролей и ключей, который бы предоставляла ssh. (я знаю про существование программ keychain( http://www.gentoo.org/proj/en/keychain/ ) ну и сам ssh-agent, они не умеют сохранять пароли между перезагрузками)
- Вполне сойдет: граф. тулза или демон какой, который бы делал то, что мне надо.
Использовать Gnome только для того, чтобы запоминались пароли между перезагрузками очень бы не хотелось.
Может быть все уже давно решили этот вопрос простым способом, а я не в курсе. Спасибо за ответы.
Есть много ssh ключей(пока их 10 штук), у каждого ключа свой пароль. Недавно перешел на Debian Squeeze с Ubuntu и встала такая проблема.
В Ubuntu я использовал Gnome и там была связка программ gnome-keyring-daemon + seahorse-agent, которые отвечали за хранение паролей. Насколько я смог разобраться, gnome-keyring-daemon в качестве главного пароля использовал пароль для входа пользователя в систему.
Теперь я попробовал воспроизвести тоже самое, но на Debian Squeeze и без gnome-session, а на простом openbox, поправил некоторые баги этого демона (он не экспортирует переменные окружения при запуске и остальное), но мне так и не удалось добиться того, чтобы этот демон один раз спросил пароль от ключа и запомнил его навсегда, т.е. после перезагрузки компьютера - он снова спрашивает. Я был бы рад переводить компьютер в режим suspend, но в Squeeze эта функциональность просто не работает (они там что-то сломали, даже пакет uswsusp убрали из репа).
Что хотелось бы:
- В идеале: консольная тулза, которая умела бы запоминать пароли для ключей и хранить их между перезагрузками, потому что вводить 10 разных паролей по 20 символов длиной каждый день уж очень утомительно. Т.е. чтобы она один раз спросила эти пароли и запомнила навсегда, и хранили бы у себя какой-нибудь зашифрованный кеш паролей и ключей, который бы предоставляла ssh. (я знаю про существование программ keychain( http://www.gentoo.org/proj/en/keychain/ ) ну и сам ssh-agent, они не умеют сохранять пароли между перезагрузками)
- Вполне сойдет: граф. тулза или демон какой, который бы делал то, что мне надо.
Использовать Gnome только для того, чтобы запоминались пароли между перезагрузками очень бы не хотелось.
Может быть все уже давно решили этот вопрос простым способом, а я не в курсе. Спасибо за ответы.
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Сохранение паролей от ssh ключей между сессиями
На сколько я понял, вам нужен безпарольный доступ по ssh на кучу разных машин. Это можно сделать через ssh-keygen. Нужно сгенерировать два ключа: секретный (private) и публичный (public). Делается это так:
Далее вам нужно публичный ключ выложить на те удалённые машины, на которые вы хотите получать безпарольный ssh доступ:
После этого машины, на которые вы выложили свой публичный ключ, будут принимать вас по ssh без пароля.
Код: Выделить всё
# ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
<your-key> user@hostДалее вам нужно публичный ключ выложить на те удалённые машины, на которые вы хотите получать безпарольный ssh доступ:
Код: Выделить всё
cat ~/.ssh/id_rsa.pub | ssh user@remotehost 'cat >> ~/.ssh/authorized_keys'После этого машины, на которые вы выложили свой публичный ключ, будут принимать вас по ssh без пароля.
-
kodx
- Сообщения: 7
- ОС: Linux
Re: Сохранение паролей от ssh ключей между сессиями
Спасибо за ликбез, про все это я уже в курсе.
Хотелось бы заметить, что в приведенной подсказке по генерации паролей есть несколько недочетов, а конкретно:
В моем случае у каждого ключа свой пароль.
Чтобы оперировать такими ключами обычно используют программу ssh-agent, которая запусается при старте и экспортируют переменные окружения для работы с этим агентом. После того как агент запущен, командой ssh-add можно добавить в него ключи, предварительно введя пароля для каждого ключа. В таком состоянии агент сохраняет пароли от ключей на весь период сеанса пользователя (ну или до перезагрузки, смотря как вы его запускаете). Я же прошу подсказать решение, которые бы при перезагрузке сохраняло бы добавленные ключи в агент(или что там будет).
Скажу так, после нескольких дней исследования этого вопроса пришел к решению. Далее попробую его описать.
Дистрибутив Debian GNU/Linux Squeeze (на данный момент testing).
Для работы нам понадобятся такие пакеты
gdm libpam-gnome-keyring gnome-keyring openssh-client
данный набор не универсален, я мог что-то пропустить, не бойтесь устанавливать recommended и suggested пакеты, лишними они не будут.
Согласно текущей документации gnome-keyring был овязан от гнома и теперь может использоваться как самостоятельное приложение.
Debian Squeeze по умолчанию пишет в файл /etc/pam.d/gdm такие записи:
Если ваш дистрибутив этого не сделал, можете добавить сами.
Суть этих модулей в том, что при запуске gnome-keyring-daemon, ему в качестве аргумента передается ваш пароль от входа, он же используется как основной пароль для разблокировки брелока.
После того как все было установлено, при следующем входе в ваше графическое окружение через gdm, автоматически будет запущен gnome-keyring-daemon. Но есть один нюанс - он не будет инициализирован. Для его инициализации необходимо добавить в ваш автозапуск (смотря какое окружение вы используете, смотрите сами, я обычно это делаю через ~/.xsession)
Данная строчка проинициализирует gnome-keyring-daemon и экспортирует переменные окружения, которые будут указать на этот демон, в случае, когда необходимо будет запросить пароль от брелока или разблокировать ключ.
Допустим у вас уже есть сгенерированный ключ, можно воспользоваться инструкцией от Luinnar. У нас есть два ключа, пусть это будут my_key и my_key.pub. Первый ключ приватный, а второй публичный. Мы копируем их в каталог ~/.ssh, после чего набираем команду
gnome-keyring import ~/.ssh/my_key
должно появится окно для ввода пароля от ключа, и галочка "запомнить пароль"(или что-то подобное). После этого можно входить на удаленные компьютеры без ввода пароля для каждого из ключей.
Для удобного управления ключами и вашими pgp подписями можно установить программу seahorse.
Если вы выбрали "запоминать пароль", то при следующей перезагрузке вам не потребуется вводить пароль от ключа, он будет сразу использован. Главное не забудьте добавить
в автозагрузку.
Все это нужно для тех, кто не использует ни GNOME ни KDE. В первом этот менеджер стартует из gnome-session, а у второго есть свой KWallet.
Надеюсь результаты моего небольшого исследования будут кому-то еще полезны. Тема повисит немного открытой, потом я её закрою, если у кого-то вдруг не найдется консольного решения.
Хотелось бы заметить, что в приведенной подсказке по генерации паролей есть несколько недочетов, а конкретно:
- rsa не рекомендуется для шифрования, хотя и является более универсальным, но его стойкость ниже чем у dsa. Поэтому лучше выбирать dsa.
- генерировать ключи без пароля это очень плохо, т.к. имея лишь публичный ключ, можно получить приватный.
В моем случае у каждого ключа свой пароль.
Чтобы оперировать такими ключами обычно используют программу ssh-agent, которая запусается при старте и экспортируют переменные окружения для работы с этим агентом. После того как агент запущен, командой ssh-add можно добавить в него ключи, предварительно введя пароля для каждого ключа. В таком состоянии агент сохраняет пароли от ключей на весь период сеанса пользователя (ну или до перезагрузки, смотря как вы его запускаете). Я же прошу подсказать решение, которые бы при перезагрузке сохраняло бы добавленные ключи в агент(или что там будет).
Скажу так, после нескольких дней исследования этого вопроса пришел к решению. Далее попробую его описать.
Дистрибутив Debian GNU/Linux Squeeze (на данный момент testing).
Для работы нам понадобятся такие пакеты
gdm libpam-gnome-keyring gnome-keyring openssh-client
данный набор не универсален, я мог что-то пропустить, не бойтесь устанавливать recommended и suggested пакеты, лишними они не будут.
Согласно текущей документации gnome-keyring был овязан от гнома и теперь может использоваться как самостоятельное приложение.
Debian Squeeze по умолчанию пишет в файл /etc/pam.d/gdm такие записи:
Код: Выделить всё
@include common-auth
auth optional pam_gnome_keyring.so
@include common-session
session optional pam_gnome_keyring.so auto_startЕсли ваш дистрибутив этого не сделал, можете добавить сами.
Суть этих модулей в том, что при запуске gnome-keyring-daemon, ему в качестве аргумента передается ваш пароль от входа, он же используется как основной пароль для разблокировки брелока.
После того как все было установлено, при следующем входе в ваше графическое окружение через gdm, автоматически будет запущен gnome-keyring-daemon. Но есть один нюанс - он не будет инициализирован. Для его инициализации необходимо добавить в ваш автозапуск (смотря какое окружение вы используете, смотрите сами, я обычно это делаю через ~/.xsession)
Код: Выделить всё
eval $(gnome-keyring-daemon -s)Данная строчка проинициализирует gnome-keyring-daemon и экспортирует переменные окружения, которые будут указать на этот демон, в случае, когда необходимо будет запросить пароль от брелока или разблокировать ключ.
Допустим у вас уже есть сгенерированный ключ, можно воспользоваться инструкцией от Luinnar. У нас есть два ключа, пусть это будут my_key и my_key.pub. Первый ключ приватный, а второй публичный. Мы копируем их в каталог ~/.ssh, после чего набираем команду
gnome-keyring import ~/.ssh/my_key
должно появится окно для ввода пароля от ключа, и галочка "запомнить пароль"(или что-то подобное). После этого можно входить на удаленные компьютеры без ввода пароля для каждого из ключей.
Для удобного управления ключами и вашими pgp подписями можно установить программу seahorse.
Если вы выбрали "запоминать пароль", то при следующей перезагрузке вам не потребуется вводить пароль от ключа, он будет сразу использован. Главное не забудьте добавить
Код: Выделить всё
eval $(gnome-keyring-daemon -s)в автозагрузку.
Все это нужно для тех, кто не использует ни GNOME ни KDE. В первом этот менеджер стартует из gnome-session, а у второго есть свой KWallet.
Надеюсь результаты моего небольшого исследования будут кому-то еще полезны. Тема повисит немного открытой, потом я её закрою, если у кого-то вдруг не найдется консольного решения.
-
BIgAndy
- Сообщения: 1923
-
/dev/random
- Администратор
- Сообщения: 5458
- ОС: Gentoo
Re: Сохранение паролей от ssh ключей между сессиями
Вы, наверное, хотели сказать "для подписей", а не "для шифровния". dsa не используется для шифрования.
Генерировать ключи без пароля это плохо, если этот ключ у вас могут спереть. Пароль на ключе всего лишь делает скопированный с вашего компа закрытый ключ бесполезным без пароля. А на сложности взлома через открытый ключ он никак не сказывается.
Закрывать темы могут только модераторы.
-
kodx
- Сообщения: 7
- ОС: Linux
Re: Сохранение паролей от ssh ключей между сессиями
ssh-cluster это вообще тут к чему?
Я уже писал, что это не выход. Прочел вдоль и поперек эти маны.
Попробую пояснить в который раз.
Мы загрузили компьютер. Запускаем ssh-agent командой
eval ($ssh-agent)
Потом добавляем приватный ключ командой
ssh-add ~/.ssh/my_key
программа запрашивает пароль от ключа, мы его вводим. Работаем в этой сессии. Перезагружаем компьютер. Повторяем все действия опять.
Я же хочу сделать так, чтобы он один раз спросил пароль от ключа, и запомнил его навсегда, чтобы не спрашивал меня при каждой перезагрузке.
Может я чего конкретно не понимаю в работе этих программ? Или упустил какой параметр? Если человек посылает читать маны, не комментируя совершенно никак свои заявления, это скорее признак того, что вы сами не понимаете о чем речь.
Я уже писал, что это не выход. Прочел вдоль и поперек эти маны.
Попробую пояснить в который раз.
Мы загрузили компьютер. Запускаем ssh-agent командой
eval ($ssh-agent)
Потом добавляем приватный ключ командой
ssh-add ~/.ssh/my_key
программа запрашивает пароль от ключа, мы его вводим. Работаем в этой сессии. Перезагружаем компьютер. Повторяем все действия опять.
Я же хочу сделать так, чтобы он один раз спросил пароль от ключа, и запомнил его навсегда, чтобы не спрашивал меня при каждой перезагрузке.
Может я чего конкретно не понимаю в работе этих программ? Или упустил какой параметр? Если человек посылает читать маны, не комментируя совершенно никак свои заявления, это скорее признак того, что вы сами не понимаете о чем речь.
-
/dev/random
- Администратор
- Сообщения: 5458
- ОС: Gentoo
Re: Сохранение паролей от ssh ключей между сессиями
Передать команде ssh-add известный скрипту пароль можно через expect. Пароли от всех ключей можно хранить в зашифрованном через openssl файле. Скрипт может спросить у пользователя "глобальный" пароль, расшифровать с его помощью этот файл и вызвать нужное количество раз ssh-add с прочитанными из него паролями.
-
kodx
- Сообщения: 7
- ОС: Linux
Re: Сохранение паролей от ssh ключей между сессиями
Вы, наверное, хотели сказать "для подписей", а не "для шифровния". dsa не используется для шифрования.
Читал что rsa можно использовать и для шифрования и для подписей, dsa же только для подписей.
Генерировать ключи без пароля это плохо, если этот ключ у вас могут спереть. Пароль на ключе всего лишь делает скопированный с вашего компа закрытый ключ бесполезным без пароля. А на сложности взлома через открытый ключ он никак не сказывается.
Все-же с паролем выходит защищеннее.
Закрывать темы могут только модераторы.
Я подразумевал что повешу тег РЕШЕНО, и тогда шансов, что сюда кто-то еще заглянет, совсем не останется.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Сохранение паролей от ssh ключей между сессиями
кстати, как?
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Сохранение паролей от ssh ключей между сессиями
kodx писал(а): ↑29.03.2010 21:53Спасибо за ликбез, про все это я уже в курсе.
Хотелось бы заметить, что в приведенной подсказке по генерации паролей есть несколько недочетов, а конкретно:
- rsa не рекомендуется для шифрования, хотя и является более универсальным, но его стойкость ниже чем у dsa. Поэтому лучше выбирать dsa.
Вопрос весьма и весьма спорный. Есть доказательства?
В любом случае, устанавливаем желаемую длину ключа опцией -b и будет вам безопасность.
Хотя если заглянуть в man, то мы увидим, что для RSA по-умолчанию используется длина ключа 2048 и можно указать больше, в то время как для DSA всегда только 1024. Это уже говорит в пользу RSA.
(man ssh-keygen) писал(а):-b bits
Specifies the number of bits in the key to create. For RSA keys, the minimum size is 768 bits and the default is 2048 bits.
Generally, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.
Кому интересно и кто знает англ. можете почитать переписку между Ron Rivest (один из авторов RSA) и Leo de Velez, который, как ему казалось, сломал RSA:
http://www.seedmuse.com/rsa_edit.htm
Если кратко, то вот что ответил Ron:
(Ron Rivest) писал(а):Dear Leo --
Thanks for the more detailed explanation of your approach to attacking RSA given in your emails (copied below). For the reasons I will explain, and as you are perhaps aware, I think your approach is unlikely to work in practice against large RSA numbers. It would be very premature or misleading to characterize RSA as "broken" based on your work to date.
On the other hand, the strength of a cryptosystem can only be determined by subjecting it to extensive analysis and attack by all interested parties. I encourage you (and others) to try and find a "shortcut" for breaking RSA faster than the known attacks (which also don't work in practice when the numbers are large). Perhaps you will someday find an attack that works efficiently. (Of course, I rather hope you won't, but I don't want to discourage you from trying!)
...
- генерировать ключи без пароля это очень плохо, т.к. имея лишь публичный ключ, можно получить приватный.
Вам хорошо отвитил /dev/random. Пароль на это не влияет совершенно.
Надеюсь результаты моего небольшого исследования будут кому-то еще полезны. Тема повисит немного открытой, потом я её закрою, если у кого-то вдруг не найдется консольного решения.
Будьте уверены, после того как вы всё описали и выложили на этот форум, добытые вами знания не пропадут.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Сохранение паролей от ssh ключей между сессиями
kodx
обратите внимание на
keychain - key manager for OpenSSH
и
pwsafe - command line encrypted password database manager
обратите внимание на
keychain - key manager for OpenSSH
и
pwsafe - command line encrypted password database manager
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Сохранение паролей от ssh ключей между сессиями
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
/dev/random
- Администратор
- Сообщения: 5458
- ОС: Gentoo
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Сохранение паролей от ssh ключей между сессиями
А, ну разве что.. (:
Но пароль подобрать, думаю, не дольше будет. (;
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж