Windows で sshd。gnupack 10.0 編
Windowsに gnupackを突っ込み、sshdを動かしてようとしたときに発生した問題と解決方法。
gnupack とは cygwinっぽい何か、です。
cygwinと違うのは、圧縮ファイルのダウンロード&解凍後、すぐに使えることだったり、emacsがセットになっているので信者の方は(ry
gnupackの導入手順
以下の作業は Windows7 UACを無効にしている環境で行なっています。
1.ダウンロード&インストール
以下のリンクから、gnupack_devel-<最新版>.exe てのを落として、適当な場所に展開する。
http://sourceforge.jp/projects/gnupack/releases/
2.初期設定
展開した場所にある、config.iniを開き、CYGWIN = .... の後ろに ntsec を追加する。
CYGWIN = nodosfilewarning noenvcache strip_title title ntsec
3.起動
解凍先ディレクトリにあるmintty.exe を起動する。
コマンドプロンプトっぽいのが立ち上がるはず。
sshdの導入手順
1.mintty.exe を 管理者として実行する。
エクスプローラで mintty.exe を右クリし、管理者として実行を選択。
2.opensslをインストールする。
以下のコマンドを叩く。
# cyg-pm install openssl -require
3.後々躓かないように、/etc/passwd, /etc/groups, /var のアクセス権を変更する。
# chmod +r /etc/passwd
# chmod +r /etc/groups
# chmod +x /var
4.sshd の設定を行う。
以下のコマンドを叩く
# ssh-host-config -y
・・・・
途中でパスワード入力を要求されるので、適当に入れる。
新しく作られる cyg_server というユーザアカウントのパスワードになります。
5.完了したら、putty などで localhost:22 に繋げば sshで接続できるはず。
ログインユーザとパスワードは、windows のアカウント情報をそのまま使ってください。
6.公開鍵認証とか
説明略。
linuxでのやり方がそのまま使えるんで知りたい人はぐぐれ
よくあったトラブルとその解決方法
1.ssh-host-config -y を実行すると、ERROR、って出て途中で止まる。
原因:大抵は /etc/passwd 等のアクセス権限の設定をしていない。
対策:エラーの文面を確認してその指示に従う。
2.ssh-host-config -y を実行すると、WARNING がいっぱい出る。
とりあえず処理は正常に完了するように見えるが、ssh で繋いでみると、即切りされる。
原因:おそらく /etc/ssh_host_key 等の生成に失敗している。
このとき、/etc/ssh_host_* のファイルサイズが0バイトになっている。
対策:/etc/ssh_host_* を削除した後、手作業で作り直す。
/etc 以下で直接作ろうとすると なぜか ssh-keygen がこけるので、以下のようにするといい感じ。
# cd ~
# ssh-keygen -t rsa1
# ssh-keygen -t dsa
# ssh-keygen -t ecdsa
# cp identity /etc/ssh_host_key
# cp id_rsa /etc/ssh_host_rsa_key
# cp id_dsa /etc/ssh_host_dsa_key
# cp id_ecdsa /etc/ssh_host_ecdsa_key
# chown cyg_server:Administrators /etc/ssh_host_*
3.それでもだめなとき
原因:不明
対策:mintty 上から、以下のコマンドを入力し、sshdサービスを削除する。
# cygrunserver -E sshd
# cygrunserver -R sshd
コンパネ>コンピュータの管理>ユーザとグループ ユーザ cyg_server, sshd を削除する。
gnupack を一回削除し、最初の手順からやり直す。
過去何回か入れてるけど、今のところはこのどれかで成功している。