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

のらぬこの日常を描く

ノージャンルのお役立ち情報やアニメとゲームの話、ソフトウェア開発に関する話などを中心としたブログです。

Windows で sshd。gnupack 10.0 編

windows 技術・開発

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 rsa

      # 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 を一回削除し、最初の手順からやり直す。

過去何回か入れてるけど、今のところはこのどれかで成功している。