ssh.bat を使うと vagrant で TeraTerm が2つ起動する件
Windows で Vagrant を使う時は ssh.bat を使ってるんだけど、いつからか vagrant ssh
すると TeraTerm が2つ起動する現象に悩まされてきた。
ちょこっと時間が出来たので、この現象について詳しく調べてみた。
まず ssh.bat
の @echo.off の次の行にログ出力を仕込む。
echo "[%TIME%] %*" >> "%USERPROFILE%\Desktop\sshlog.txt"
このログ出力、もともとは標準出力に echo するだけだったんだけど、それだとログが1行しか出なかった。さんざん悩んだ挙句、もしや Vagrant が内部で ssh コマンドを叩いているとすると、echo しても標準出力にはログが出ないのでは?ということに気づいて、ファイルに出すようにした。
結果、ビンゴ。こんなログが残った。
"[14:28:51.06] " "[14:28:51.38] vagrant@127.0.0.1 -p 2222 -o LogLevel=FATAL -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -i C:/Users/rch850/.vagrant.d/insecure_private_key "
どうやら引数なしで ssh コマンドが実行されているらしい。今の ssh.bat だと、引数なしでも普通に起動するので、それを切ってしまえば解決するのだけど、それはそれでなんだかなぁ。
おそらく Vagrant 内部では ssh コマンドを起動して、それに標準入力からコマンドを流し込んでいるんだろう。そうだとしたら、流し込まれたコマンドが実行されると ssh コマンドは終了する。これと同じ機能を ssh.bat にも組み込めたらいいんだけど、今のところはオーバースペックなので、引数なしでは起動しないようにしておく。