1

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

Я настроил 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
  • Вы можете запустить ssh-agent в следующей оболочке и в новую экспортировать переменную среды (например, из файла, созданного в первой)

    ssh-agent > ~/.ssh_agent_env
    source ~/.ssh_agent_env
    
  • Вас могут попросить ввести фразу-пароль, используя приглашение GUI, которое предоставляется ssh переменной среды SSH_ASKPASS . В Linux обычно 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .