わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

64bit版Cygwinを入れたら,sshでログインできなくなった?

自宅PCに,Cygwinの64ビット版をインストールしました.https://github.com/ggreer/the_silver_searcher)も,64ビット環境でそのまま実行できます*1
あとの説明のため,フォルダ名を以下のとおり定めておきます.

32ビット版と64ビット版でホームディレクトリが同じなのは,Windowの設定として*2,ユーザー環境変数HOMEの値をE:\cygwin\home\takehikomにしているためです.
ターミナルエミュレータはminttyを使います.E:\cygwin64\bin\mintty.exeを右ボタンでドラッグして,デスクトップ上にショートカットを作り,プロパティを編集して,リンク先を「E:\cygwin64\bin\mintty.exe」から「E:\cygwin64\bin\mintty.exe /home/takehikom/bin/mintty.sh」に変更しておきます*3.そしてダブルクリック.uname -aの出力に「x86_64」が入ったし,32ビット版のminttyも,別途立ち上げ,同時に動くことを確認しました.
といったところでタイトルの件です.64bit版Cygwinから,sshコマンドで,リモートログインできなくなったのです.実行例を示します.

$ ssh home_server
ssh: Could not resolve hostname home_server: Name or service not known

home_serverは自宅サーバの名前で,~/.ssh/configでホスト情報を定義しています.しかしエラーメッセージによると,そんな名前もサービスも知らないと言うのです.
同様に~/.ssh/configで名前を定義している,自宅外のサーバにも,接続を試みたものの同じエラーとなりました.
これでは64ビット環境に乗り換えられない…
Webでいろいろ探して,一つ,情報を見つけました.

/home/mikio にホームを設定してるのではなく、 c:/Users/mikio にHOMEを設定し てる場合でssh接続すると、下記のように /home/mikio ディレクトリが作成できないと怒られてしまう。
(略)
この場合は、 /etc/passwd の /home/mikio となってるところを、 /cygdrive/c/Users/mikio に書き換えれば良い。

http://mikio.github.io/article/2012/12/22_cygwinssh.html

コマンド(引数)も,エラーメッセージも異なりますが,手元の環境を見直してみると,次のとおり,該当します.

$ grep takehikom /etc/passwd
takehikom:(略):/home/takehikom:/bin/bash
$ pwd
/cygdrive/e/cygwin/home/takehikom

書き換えておきましょう.vipwコマンドはなく,vimコマンドを使いました.

$ vim /etc/passwd
(編集内容は省略)
$ grep takehikom /etc/passwd
takehikom:(略):/cygdrive/e/cygwin/home/takehikom:/bin/bash

これでリモートログインをやり直すと…

$ ssh home_server
Welcome to Ubuntu 13.10 (GNU/Linux 3.11.0-12-generic x86_64)

めでたく入れました.自宅外へも,リモートログインできました.


/home/takehikom ディレクトリ(自分の場合は)の件,気になったので,64ビット環境でls /home/takehikomを実行してみると,そこに.sshとbinのディレクトリだけがあることに気づきました.
これで「Name or service not known」と出たのに合点がいきました./etc/passwdの編集前は,/home/takehikom/.ssh以下のファイルを参照していたのでした.
上のとおり,ホームディレクトリを独自に設定したために,~/.sshと/home/takehikom/.sshとが別になっていました.前者は/cygdrive/e/cygwin/home/takehikom/.ssh,後者は/cygdrive/e/cygwin64/home/takehikom/.sshに対応します.
/home/takehikom/binにあるのはmintty.shのみです.以前に置いていて,この日記を書くまで,忘れてしまっていました./home/takehikom (/cygdrive/e/cygwin64/home/takehikom)は当面のあいだ,参照しないほうが良さそうなので,minttyのショートカットのリンク先も,「E:\cygwin64\bin\mintty.exe -t mintty /cygdrive/e/cygwin/home/takehikom/bin/mintty.sh」に変更しておきました.

*1:とはいえ気味が悪いので,64ビットに完全移行したら,ビルドし直すとします.ただ,別に新規で64ビット版Cygwinを入れたところでは,agはビルドできたものの,実行時エラーになってしまうので,少し悩んでいるところです.

*2:アクセス方法(Windows 7):コントロール パネル>システム>システムの詳細設定>「詳細設定」タブ>環境変数

*3:mintty.sh; 使い方はmintty+screenで巡回をご覧ください.