【お知らせ】
<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
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