Windows で mintty を使って vagrant ssh したい時

Windows で Vagrant を試していて、ちょっとつまづいたところがあったのでメモ。
コマンドプロンプトではなく mintty を使っている場合、「vagrant ssh」と打っても「Pseudo-terminal will not be allocated because stdin is not a terminal.」とエラーが出てしまい ssh 接続ができません。

mintty は Cygwin のターミナルエミュレータで、使いやすいのでコマンドプロンプトではなくこちらを使いたいところ。※mintty については mintty を使えるようにする | dogmap.jp が詳しいです。

調べたところ「vagrant ssh」ではなく普通の ssh 接続(「ssh なんたら~」)で繋げばいけるらしい。vagrant の ssh 接続情報は ssh-config で調べることができるので、これを使って ~/.ssh/config に設定。

$ vagrant ssh-config >> ~/.ssh/config

これで ~/.ssh/config に次のような記述が追加されます。

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile ユーザーディレクトリ/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

あとは、mintty で

$ ssh default

とすれば、mintty から ssh 接続できます。~/.ssh/config の一行目「Host default」を「Host vagrant」にすれば

$ ssh vagrant

で接続できます。覚えやすいかなと私はこっちにしておきました。

もし最初から Host を指定したいならば、

vagrant ssh-config --host HOSTNAME >> ~/.ssh/config

としておけば OK。

参考: