WinSCPをタスクで自動起動 — SSH鍵とパスフレーズの問題(ただしWindows2000の話し)

Windows2000の話しです。今年は2013年ですがまだ使っています。
定期的にデータを別のFreeBSDサーバーに転送するためにWinSCPを使います。

ここからFreeBSDサーバーへは既にSSHで接続しているので、普通にパスフレーズのあるSSHキーを使って認証していました。

同じキーを使って WinSCP で転送しようと思い、まずはWinSCPスクリプトとそれらを起動するバッチを書きます。
以下に例を掲載しますが、これでPagent を常駐させてキーとパスフレーズを登録しておけば trans.bat をダブルクリックして、問題なく転送できました。

trans.winscpscript (WinSCPスクリプト)
option batch on
open username@myserver.example.com
option confirm off
put "d:\document\*.*"
exit

trans.bat (バッチ)
"C:\Program Files\WinSCP\WinSCP.com" /console /script=c:\...\trans.winscpscript

しかし、タスクスケジューラにこのバッチを登録して定期的にバッチを起動させようとしても転送はされません。

ログを見てみるとサーバー側からpublicキーに対応するprivateキーがないというような「お断り」のメッセージが来ています。
どうも、タスクスケジューラで起動した場合は Pagentが効かないようです。

そこで、バッチを少し書き直してprivateキーを指定するようにします。

trans.bat (バッチ)修正版
"C:\Program Files\WinSCP\WinSCP.com" /console /script=c:\...\trans.winscpscript /privatekey="C:\Documents and Settings\.....\mypravatekey.ppk"

しかし、これではパスフレーズが渡せていません。WinSCPにパスフレーズのコマンドオプションはないようです。

仕方ないので、転送用にパスフレーズのないprivateキーを作ることにしました。
今使っているprivateキーをPuTTY key gen で読み込んで、パスフレーズを削除して、これを別の名前で保存すれば、そのままprivateキーとして使えます。
例えばmypravatekey_nopass.ppk のようなファイル名にします。

trans.bat (バッチ)再修正版
"C:\Program Files\WinSCP\WinSCP.com" /console /script=c:\...\trans.winscpscript /privatekey="C:\Documents and Settings\.....\mypravatekey_nopass.ppk"


セキュアじゃないかもしれないですが、ほかに何かいい方法があればどなたか教えていただければと思います。(ただしWindows2000です)

コメント

このブログの人気の投稿

facebookはポートフォリオになり得るだろうか?

iPad用PDFビュワーの縦書きテキスト対応について