ローカルシェルが関与していない場合に(Cygwin / X11で)プライベートSSHキーのロックを解除しますか?


1

を含むCygwin / X11をインストールしましたopenssh。公開鍵と秘密鍵のペアを設定しました。~/.ssh/authorized_keysRemoteHostの公開キーをインストールしました。

~/.XWinrcローカル端末でRemoteHostシェルを開くメニュー項目を提供するようにCygwin / X11を(経由で)設定しました:

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

RootMenu root

このメニュー項目が最初に選択されたときに、秘密鍵のパスフレーズを照会したい。後続の呼び出しでクエリを受け取りたくありません。

関連するローカルシェルがないので、つまり私は何もできない(設定のようにssh_agentまたはkeychainで)~/.bash_profile、私はここで途方に暮れてビットをしています。キーフレーズを入力するシェルもありません。

ローカルシェルが関与していない場合、SSHプライベートキーのロックを解除するにはどうすればよいですか?

回答:


1
  • ssh-agent後続のシェルで起動し、新しいシェルに環境変数をエクスポートできます(たとえば、最初のシェルで作成されたファイルから)

    ssh-agent > ~/.ssh_agent_env
    source ~/.ssh_agent_env
    
  • ssh環境変数によって提供されるGUIプロンプトを使用して、パスフレーズの入力を求めることができますSSH_ASKPASS。Linuxでは、通常gnome-askpassまたは同様です。cygwinにも似たようなものがあります。

  • 必要なものを実現するためにAddKeysToAgent、新しく使用したキーを実行中ssh-agentに追加するオプションがあります。

これらは両方とも、finalを呼び出す前にいくつかのコーディング/チェックを必要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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.