Разблокировка закрытого ключа SSH (с помощью Cygwin / X11), когда не задействована локальная оболочка?

271
DevSolar

Я установил Cygwin / X11, в том числе openssh. Я настроил пару открытый / закрытый ключ. Я установил открытый ключ в ~/.ssh/authorized_keysRemoteHost.

Я настроил Cygwin / X11 (через ~/.XWinrc) для предоставления пункта меню, который открывает оболочку RemoteHost в локальном терминале:

menu root { RemoteShell exec "/bin/xterm.exe -e /usr/bin/ssh -Yl <user> RemoteHost" }  RootMenu root 

Я хочу запросить пароль моего личного ключа, когда этот пункт меню выбирается в первый раз. Я не хочу получать запросы на последующие звонки.

Поскольку здесь не задействована локальная оболочка, то есть я не могу ничего сделать (например, настроить ssh_agentили keychain) ~/.bash_profile, я немного растерялся. Также нет оболочки для ввода ключевой фразы.

Как разблокировать свой закрытый ключ SSH, если не задействована локальная оболочка?

1

1 ответ на вопрос

1
Jakuje
  • Вы можете запустить ssh-agentв следующей оболочке и в новую экспортировать переменную среды (например, из файла, созданного в первой)

    ssh-agent > ~/.ssh_agent_env source ~/.ssh_agent_env 
  • Вас могут спросить о парольной фразе, используя приглашение GUI, которое предоставляется sshпеременной окружения SSH_ASKPASS. В линуксе обычно gnome-askpassили аналогично. В cygwin тоже будет нечто подобное.

  • Есть AddKeysToAgentопция, которая добавит недавно использованные ключи к работе, ssh-agentчтобы достичь того, что вам нужно.

И то и другое требует некоторого кодирования / проверки перед вызовом финала ssh, например, скрипт bash, который вы можете вызвать RemoteShell exex /path/to/my/script.sh, например:

#!/bin/bash ps aux | grep ssh-agent | grep -v grep if [ "$?" = "1" ]; then # start a new agent (in a background) and store its environent ssh-agent > ~/.ssh_agent_env end # load existing ssh-agent connection source ~/.ssh_agent_env  /bin/xterm.exe -e /usr/bin/ssh -oAddKeysToAgent=yes -Yl <user> RemoteHost # or do whatever magic you want 
Можете ли вы поверить, что мысль о сценарии локальной оболочки даже не пришла мне в голову? 8- \ DevSolar 7 лет назад 0