Напишу и сюда, раз в 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'овские утилиты работают с ним через прокси без лишних усилий и откуда бы они ни были запущены!
Надеюсь, кому-нибудь ещё кроме меня это будет полезно.