orangeProse別館

orangeProse(本ブログ)の補助

Windows Vagrant ssh問題がなぜか直った話

f:id:hidex7777:20140504011506p:plain

ここ2~3週間、vagrant sshもできなければssh hostnameもできない、という謎現象で苦しんだ。

うまくいきそうになっても、文字化けでどうしようもなかったり。

試したことがあるはずの解決法で、なぜか今日は解決した。

結論をいえば、

C:\Progran Files (x86)\Git\bin

にパスを通したら、すべてうまくいった。

これ、悪戦苦闘してる間に、一度試した方法ではあるはずなのだが……

思い出せる範囲でのプロセス

いろいろ試したけど、思い出せる範囲で記録しておく。

症状の発端

突然、ssh hostnameができなくなった。

具体的にいうと、~.ssh\configをsshが読みに行ってくれなくなった。

ssh-Fオプションをつけてconfigファイルの場所を指定すれば行けたが、簡便のためにconfigファイル作ってるんであって、そんな面倒くさいことをするのは嫌だった。

その直前に行ったこと:

  • cwRsyncのFree Editionに入っているファイルをパスの通っているディレクトリにインストール(この中にssh.exeも入っている)
  • chefとknife-solo、win32-process、windows-prをgemでインストール

ここで、chefを試している間は問題なし。

> vagrant ssh-config --host hostname >> %HOME%\.ssh\config

も問題なく、hostnameでsshログインできる。

ここでssh hostnameができなくなった。

つまりconfigファイルを読みに行ってくれなくなった。

cwRsyncはCygwin版のrsyncsshとDLLが同梱されている。

おそらくCygwinのディレクトリ解釈がうまく行っていないのだろうと考えた(だとすると、なぜそれ以前はうまくいっていたのかが謎)。

cwRsync同梱のsshがうまいこと~/.ssh/configを読んでくれる方法を探ったけれど、「Cygwin環境下ではどうすればいいか」という情報しか見つからない(cwRsyncにおいてsshrsyncのための付属品なので……あまり情報がない)。

これで数日費やした。

次に、cwRsyncで入れたssh.exeを削除。

こんどはvagrant sshすらできなくなった。

ここで「あれ?いままではなんでできてたんだろう?」という疑問が発生した。

  次に、(たぶんここでGit\binにパスを通すのも試したはず)MSYSにあるbinにパスを通した。

文字化けがひどくてダメ。

ゲスト側(Ubuntuサーバ)でLANG変数にen_US.UTF-8を設定すれば、まあ、いけるけど、以前はうまくいってたのに、釈然としない。

それに「ログアウト」の文字はどうしても文字化けする(これはMSYSのssh.exeが吐き出してるのかな)。

Gitを新たにインストール、UNIXツール(msysのコマンドのこと)も使えるパターンでインストールしたけど、やはり文字化け。

次に、使ってるコンソールラッパー(Console2を使っていた)がよくないのかな(シェルがWindowsコマンドプロンプトで、MSYSのsshを使う、という組み合わせが相性が悪いのかな)と考えた。

まずConsole2のシェルをmsysのbashに変えてみた。

文字化けがひどいのは変わらない。

他のものに変えてみよう、というわけで、Console2の後継であるConsoleZに変えた。

Chocolatayを使ってインストール。

変化なし。

minttyに変えてみる。変化なし。

MSYSを新しい(去年出たのかな?)mingw-getのGUIを使って改めてインストールしてみたりしたけど変化なし。

他にもVirtualPCVistaを入れて、そこにVirtualBoxをインストールして試そうとしたけど、これは32bit OSでは64bit OSを扱えないという壁に阻まれて断念(Vistaのインストールがちゃんと完了するまで3日ぐらいかかった)。

フォントがマズいのかも、と考えていろいろいじったけど変化なし。

で、「MSYSで文字化けするのにGitのssh使って文字化けしないなんてことはないでしょう(だってWindows版GitはmsysGitだもの)」と思いつつ、C:\Program Files (x86)\Git\binにパスを通してみる。

なぜか文字化けしない。

は?

どういうことなんでしょう????

.ssh/configも読みに行っている。

どういうことなんでしょう????

そもそもGitのbinにパスを通していない期間に、なぜvagrant sshができていたのかが謎。

ssh hostnameができたのはcwRsync同梱版を入れたからかな、と思っていたけど、それもconfigファイルを読みに行ってくれていた理由がわからない。

Windowsを窓からぶん投げたくなりました。

↓が出る頃には間に合いそう。