【お知らせ】


<2019/07/18 追記>
現在の Windows 10 では、ssh-agent がバンドルされています。Cygwin との連携は確認していませんが、WSL では ssh-agent-wsl というものが開発され、連携して利用できるようになっています。

<2015/06/17 追記>
gnupack-12.00 以降でも正常に動作するように調整しました。(調整以前は、/tmp のマウントポイントが深くなるなどの問題がありました。)

<2015/04/27 追記>
Cygwin を最新に Update したところ、keychain がエラーを吐くようになりました。
とりあえず、~/bin/ssh-setup.sh を次のとおりとし、ssh-agent.exe を一旦終了した後、NTEmacs を再起動することで回避できます。
# source ssh-keychain.sh
source ssh-agent.sh
# source ssh-pageant.sh

【本題】


この設定は、trump-method に plink や pscp を使う場合には不要です。 plink や pscp を使う場合のパスフレーズの管理には、PuTTY 付属の Pageant を利用してください。

恐らく、win-ssh-agent.exe を使うのが一番簡単です。以降の設定は、コマンドラインで完結したい方がお使いください。



以下は設定例です。適当に自分の環境に合うように調整してください。

<作業手順>
0) ssh-keygen.exe を使って鍵を作成し、接続するサーバに公開鍵を登録する。この場合、パスフレーズを利用することが、今回の前提。
  ssh-pageant.exe を使う場合は、PuTTY 付属の Pageant と連携するので、そちらで鍵の管理をする。
  ※ ssh-keygen.exe で作成した秘密鍵を Pageant に取り込むには、PuTTYgen でインポートして変換するする必要がある。
   このときに、PuTTY 付属の PuTTYgen では変換できない(エラーが出る)場合があるので、その場合は WinSCP 付属の PuTTYgen を使うこと。
    http://kakikake2.wordpress.com/2012/03/18/ssh-key-generate-2/
   Pageant も WinSCP に付属しているが、こちらは PuTTY 付属のものを使った方がよい。PuTTY 付属のものは、鍵の照会確認のダイアログがでる機能があるなど、
   セキュリティ対策機能を持ったものとなっている。
1) ホームディレクトリに binディレクトリを作成する。( mkdir ~/bin )
2) 1) で作成した binディレクトリに次のファイルを作成する。

~/bin/ssh-keychain.sh ← ssh-agent.exe を keychain と連携して使う場合に必要 (keychain は、別途 Cygwin にインストールする必要あり)
keychain ~/.ssh/id_rsa
source ~/.keychain/$HOSTNAME-sh

~/bin/ssh-agent.sh ← ssh-agent.exe を単独で使う場合に必要 (上記のkeychain を使うのであれば、不要な設定)
if [ -z "$SSH_AGENT_PID" -o -z "$SSH_AUTH_SOCK" ]; then
    ps | grep -q 'ssh-agent$'

    if [ $? -eq 0 ]; then
	source /tmp/ssh-agent.rc
    else
	ssh-agent -s | grep -v '^echo' > /tmp/ssh-agent.rc
	source /tmp/ssh-agent.rc
	ssh-add
    fi
fi

~/bin/ssh-pageant.sh ← PuTTY 付属の Pageant を使う場合に必要。また、~/bin に ssh-pageant.exe も格納しておくこと。(https://github.com/cuviper/ssh-pageant/downloads
if [ -z "$SSH_PAGEANT_PID" -o -z "$SSH_AUTH_SOCK" ]; then
    ps | grep -q 'ssh-pageant$'

    if [ $? -eq 0 ]; then
	source /tmp/ssh-pageant.rc
    else
	ssh-pageant -s -q > /tmp/ssh-pageant.rc
	source /tmp/ssh-pageant.rc
    fi
fi

~/bin/ssh-setup.sh ← 上記のシェルスクリプトのどれを使うかを切り替えるスクリプト
source ssh-keychain.sh
# source ssh-agent.sh
# source ssh-pageant.sh

~/bin/emacs.sh
#!/bin/sh

source ssh-setup.sh
exec /root/*emacs.exe # 起動する Emacs のインストールパスを指定する。左記は、gnupackの場合。

3) デスクトップなどに次のバッチファイルを置く (~/bin に置いて、そのショートカットをデスクトップに置くのも良いと思う。ショットカットのアイコンを NTEmacs のものに変更しておけば完璧です!)

emacs.bat
<Cygwin のインストールパス>/bin/bash -c "PATH=/bin:/home/bin emacs.sh"

4) Emacs を emacs.bat の実行で起動する。



注) ssh-agent.exe が起動していると、NTEmacs を終了しているときでも Cygwin のアップデートに失敗する場合があります。(プログラムが使用されてアップデートできないという警告が表示される。)
  その際は、タスクマネージャーから ssh-agent.exe プロセスを終了させてください。


<変更履歴>
  • 2013/03/11 keychain を使うパターンを追加した。
  • 2015/06/17 gnupack-12.00 以降でも正常に動作するように調整した。


最終更新:2020年07月19日 23:40