Автор Тема: Въпрос за ssh-gent  (Прочетена 2127 пъти)

asa

  • Напреднали
  • *****
  • Публикации: 48
    • Профил
Въпрос за ssh-gent
« -: Dec 14, 2006, 05:16 »
Дали е възможно да се настрои оторизацията с публични ключове в ssh така, че личния ключ да се прочита от агента при първо използване, а не при добавяне (или пък опита за добавяне да се прави автоматично от ssh при връзка към сървър, за който е настроен IdentityFile)? Също така може ли ssh агента да забравя сам ключовете след известно време?

Идеята е да се елеменира нуждата от ръчно добавяне на всички ключове, които има шанс да се използват и да се настрои ssh агента за поведение, подобно на това на gpg-agent: Добавяне на ключ и питане за кодова фраза при използване, а не при пускане; забравяне на ключа примерно след 10 минути. За момента постигам това, заменяйки ssh със скрипт в ~/bin, който преди да пусне истинския ssh парсва /etc/ssh/ssh_config  и ~/.ssh/config, за да намери подходящия ключ, прави ssh-add и ползва at(1) за да го изтрие от агента. Това е малко мърляв начин и не съм сигурен, че ще работи винаги.



Активен

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Въпрос за ssh-gent
« Отговор #1 -: Dec 14, 2006, 07:33 »
Здравей,

Виж (пробвай) keychain.
Успех. Румен
Активен

asa

  • Напреднали
  • *****
  • Публикации: 48
    • Профил
Въпрос за ssh-gent
« Отговор #2 -: Dec 14, 2006, 12:09 »
Ползвам KeyChain, но тоази програма има съвсем различно предназначение. Целта и е да се избегне пускането на повече от по един агент за SSH и GPG на потребител. KeyChain автоматизира закачането към вече работещите агенти (ако има такива), но няма пряко отношение към управлението на ключовете в тях (макар че може да добавя ключове при пускане).



Активен

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
Въпрос за ssh-gent
« Отговор #3 -: Dec 15, 2006, 00:03 »
Цитат (asa @ Дек. 14 2006,05:16)
Дали е възможно да се настрои оторизацията с публични ключове в ssh така, че личния ключ да се прочита от агента при първо използване, а не при добавяне (или пък опита за добавяне да се прави автоматично от ssh при връзка към сървър, за който е настроен IdentityFile)?

Технологично не може с openssh агента. Той съхранява ключовете дешифрирани и затова, при добавяне, иска парола, ако частния ключ е шифриран.

Цитат (asa @ Дек. 14 2006,05:16)
Също така може ли ssh агента да забравя сам ключовете след известно време?

Виж за -t в ssh-add(1)

Цитат (asa @ Дек. 14 2006,05:16)

Идеята е да се елеменира нуждата от ръчно добавяне на всички ключове, които има шанс да се използват

Е ясно, но така работи openssh агента.

Цитат (asa @ Дек. 14 2006,05:16)
и да се настрои ssh агента за поведение, подобно на това на gpg-agent: Добавяне на ключ и питане за кодова фраза при използване, а не при пускане; забравяне на ключа примерно след 10 минути.....

Тук нещо се обърках. След като ще те пита за "кодова фраза" при използване, защо ти е агента ?

Нека в ~/.ssh/config има:
Примерен код
Host testhost
  IdentityFile path_to_file1
  IdentityFile path_to_file2

Нека ключовете са шифрирани.
Нека сървера testhost приема само втория ключ.
Нека съществуват path_to_file1.pub и path_to_file2.pub (виж ssh-keygen(1) как се създават, ако ги няма).

Тогава при ssh ... testhost, клиента ще те попита за паролата на path_to_file2: Клиента вече е изпратил публичнич ключ за path_to_file1, но е бил отхвърлен от сървера. Изпратил е и втория, който е одобрен от сървера. Сега трябва да се изпрати подписан пакет и затова ти се иска паролата за втория(одобрения).

Ето това си е питане при използване и затова не разбирам, защо трябва да се ползва агент.

Обаче, в този пример, ако изтриеш *.pub файловете, ще бъдеш попитан за паролата и на path_to_file1 и на path_to_file2. Затова са *.pub файловете.


Може да разгледаш още ControlMaster и ControlPath в ssh_config(5). Това е идеята за споделяне на сесии в една мрежова връзка. Парола ще се иска, ако е необходимо, за master сесията и докато тя е отворена, подчинените ще използват нея и няма да се иска парола.
Ако нямаш ControlMaster, ти трябва по-нова версия.
Активен

asa

  • Напреднали
  • *****
  • Публикации: 48
    • Профил
Въпрос за ssh-gent
« Отговор #4 -: Dec 15, 2006, 07:29 »
Цитат (rpetrov @ Дек. 15 2006,01:03)
ssh-agent -t

Хъм... Явно доста съм се старал за да го пропусна... Мерси, определено е по-добре от пускане с 'at' на 'ssh-add -d' '<img'>

Цитат (rpetrov @ Дек. 15 2006,01:03)
>и да се настрои ssh агента за поведение, подобно на това на gpg-agent: Добавяне на ключ и питане за кодова фраза при използване, а не при пускане; забравяне на ключа примерно след 10 минути.....

Тук нещо се обърках. След като ще те пита за "кодова фраза" при използване, защо ти е агента ?


Ще пита за кодова фраза, защото именно тоава ключа ще се добавя в агента (в момента при мен това го прави wrapper скрипта 'ssh' ). Разбира се ако в последните {таймаут} минути е имало логване със съответния SSH ключ той все още ше е в агента и няма да е нужно да се пише кодова фраза.  След като {таймаут} минути изекат и ключа се изтрие от агента за следващата връзка пак ще е нужно да се пише кодова фраза.  Така ssh-agent  ще е облекчение при множество повтарящи се операции без да се превръща в заплаха за сигурноста.

Разбира се тук възниква въпроса какво не ме устройва в предложението просто да си пускам терминал и да пиша ssh-add. Огговора ми е че не устройва не мен, а мързела ми '<img'>

А сериозно - мисля, че за GUI среда това е най-удачното поведение, защото от една страна позволява да се ползват предимствата на агента, от друга страна компромиса със сигурноста (защото агента е именно това) е краткотраен. А и представяш ли си как някой средностъкмистически люзер или узвер си пуска терминал, 'ssh-add'-ва си ключа, а като си свърши работата си го изтрива... В деня, когато това стане всички админи, преживели стреса ще бъдат уволнени по ненужност...

Цитат (rpetrov @ Дек. 15 2006,01:03)
Може да разгледаш още ControlMaster и ControlPath


Това, за което конкретно писах скрипта, емулиращ gpg-agent тип поведение на ssh-agent (освен че го намирам за най-удобно) са серии от по 5-6 чисто GUI операции, всяка от които иска ssh сесия. Сесиите не са толкова, че да спечеля скорост от използването на ControlMaster, а скриптовете, нужни за да автоматизирам нещата по този начин стават по-сложни (и съответно по-рискови от гледна точка на задклавиатурни грешки и недомислици) в сравнение с намирането на дефинирания в конфигурациите ключ и добавянето му със 'ssh-add -t ...'.

Това, с което не ме устройва скрипта е че не съм сигурен какво може да не съм предвидил (макар че досега винаги е работил) и че ми досади с питането за кодова фраза когато отсреща нямам ключ. Това ме принуди да добавям с последния вариант на скрипта само ключове, описани във host секциите на ~/.ssh/config. Ако ssh можеше сам да пуска ssh-add, опити за добавяне на ключ щеше да има само когато е сигурно, че той се използва.



Активен

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
Въпрос за ssh-gent
« Отговор #5 -: Dec 15, 2006, 16:05 »
Терминал не е нужно да се пуска. Има си програмка за това: ssh-askpass. Трябва да я има в дистрибуцията: или е универсалната x11-ssh-askpass или, по-рядко, тази от кода на openssh. Създава се *.desktop файл или се добавя в менюто (всъщност каквото е най-удобно за графичната среда и потребителя) нещо което стартира ssh-add.... и трябва да се появи екранчето на ssh-askpass.

И още нещо: gpg агента има възможност да симулира(емулира) ssh-agent. Не съм запознат и не съм го ползвал. Опитал ли си тази възможност ?
Активен

asa

  • Напреднали
  • *****
  • Публикации: 48
    • Профил
Въпрос за ssh-gent
« Отговор #6 -: Dec 15, 2006, 18:01 »
Цитат (rpetrov @ Дек. 15 2006,17:05)
Терминал не е нужно да се пуска. Има си програмка за това: ssh-askpass.


ssh-askpass не е програма за добаване на ключове в агента а за въвеждане на кодовата фраза когато няма активен терминал но е сетната $DISPLAY. Така че инсталирането и няма да елеминира нуждата от отваряне на терминал (или от правене на по един .desktop файл за всеки възможен ключ ако това ти се вижда по-изчистен подход).

Цитат (rpetrov @ Дек. 15 2006,17:05)
И още нещо: gpg агента има възможност да симулира(емулира) ssh-agent. Не съм запознат и не съм го ползвал. Опитал ли си тази възможност ?


Не. Сега научих от теб че я има. И при това се държи точно така, както трябва.

Не знам кога са я добавили, но със 1000% сигурност не е там от появата му - когато писах безумния скрипт в man-a на gpg агента изобщо не се споменаваше ssh. Радвам се обаче, че не съм измислял колелото - щом са добавили такава възможност значи не съм единственият, който мисли че е нужна.

Е, това приключва въпроса. Едва ли ще намеря по-добър SSH агент, държащ се като GPG агент от GPG агента, държащ се като SSH агент!  '<img'>



Активен