読者です 読者をやめる 読者になる 読者になる

ナチュラル @rch850

ナチュラル丼発祥の地、福井からお届けします。技術的な話題とか、雑談とか。

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 にも組み込めたらいいんだけど、今のところはオーバースペックなので、引数なしでは起動しないようにしておく。