Lev Serebryakov (blacklion) wrote,
Lev Serebryakov
blacklion

Category:
  • Music:

Для тех админов, что пользуются и Windows, PuTTY и cygwin одновременно: общее хранилище ключей.

Напишу и сюда, раз в ru_root премодерация.

ssh от cygwin требует ssh-agent. PuTTY работает со своим pagent'ом. Запускать оба? А где запускать ssh-agent если, например, вы используете ssh и scp из скриптов или из FAR'а?

Я искал решение этой проблемы и нашёл пол-решения а пол-решения написал сам.

Итак, пол-решения: Charade. Это программка, собираемая cygwin'ом и, с одной стороны, выглядящая как ssh-agent, а с другой — как PuTTY, т.е. клиент pagent'а. Она тупо перекидывает байты и cygwin-сокета в канал для pagent'а и обратно. Ничего не шифрует, ничего не расшифровывает. Прокси.

Вторые пол-проблемы — куда пихать вывод запускаемой Шарады (который такой же как у ssh-agent'а) что бы его увидели все и везде запущенные ssh & Ko?

Я решил эту проблему так: я пихаю нужные переменные окружения в VOLATILE-окружение винды. Это то, что вы не можете отредактировать через GUI (там доступны только USER и SYSTEM-Части, которые сохраняются при перезагрузках). VOLATILE-окружение живёт только пока жива пользовательская сессия. То, что нужно. cygwin наследует всё windows-окружение и видит переменные, прописанные там.

Для запихивания нужного на каждом логине я написал вот такой JScript'ик:

var host = WScript.CreateObject("WScript.Shell");
var venv = host.Environment("Volatile");
// !!! REPLACE THIS WITH YOUR PATH TO CHARADE
var exec = host.Exec("C:\\cygwin\\bin\\charade.exe -c"); // CSH-style output is easier to parse
while(!exec.StdOut.AtEndOfStream) {
 var line = exec.StdOut.ReadLine();
 var words = line.split(" ");
 if (words[0] == "setenv" && words.length == 3) {
  // Remove last character, which is ';'
  venv(words[1]) = words[2].substring(0,words[2].length - 1);
 }
}

А в Star Menu/Programs/Startup я добавил ярлык для c:\windows\system32\wscript.exe <path-to-js-file>. Ну и запуск pagent у меня прописан там же. Так что ключи хранятся только в pagent'е, только он спрашивает пароли, а cygwin'овские утилиты работают с ним через прокси без лишних усилий и откуда бы они ни были запущены!

Надеюсь, кому-нибудь ещё кроме меня это будет полезно.

Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments