Cygwin + openSSH の導入

WindowsでSSHサーバーを運用する方法の1つとして、まずCygwinを導入し、Cygwin上にopenSSH(=実体としてはCYGWIN sshdというWindowsのサービス)をインストールする方法がある。

Windows 8.1上で動作を確認できたので手順をメモする。大まかな流れは以下の通り。

  1. CYGWIN sshdをインストールする
  2. CYGWIN sshdを起動する
  3. sshクライアントから接続を確認する

実際に試したところ手順1のインストールの部分に多大な労力を要しかなりストレスフルであった。原因はインストーラーの作りが未熟?であること、関連情報がネット上で錯綜しているためである。何度もあれこれやっている内に、なんとかうまく行ってしまったという感じである。他の成熟した製品が利用可能ならそちらを検討した方がいいと思われる。

sshdのインストール

ssh-host-configの実行(初回)

$ ssh-host-config

yesと答えていく。パーミッションエラー出る
*** Query: Should privilege separation be used? (yes/no) yes
*** Warning: The permissions on the directory /var are not correct.
*** Warning: They must match the regexp d..x..x..[xt]
*** ERROR: Problem with /var directory. Exiting.

chmodのバグ回避

$ chgrp -R Users /var
$ chmod 755 /var
$ ls -ld /var
drwxr-xr-x+ 1 nori_2 Users 0 6月  21 17:09 /var

ssh-host-configの実行(2回目)

$ ssh-host-config

*** Info: This script plans to use ‘cyg_server’.
*** Info: ‘cyg_server’ will only be used by registered services.
*** Query: Do you want to use a different name? (yes/no) no ←ここだけno

passwd: unknown user cf-rz4+cyg_server
*** Warning: Setting password expiry for user ‘cf-rz4+cyg_server’ failed!
*** Warning: Please check that password never expires or set it to your needs.
No user or group ‘cf-rz4+cyg_server’ known.
*** Warning: Assigning the appropriate privileges to user ‘cf-rz4+cyg_server’ failed!
*** ERROR: There was a serious problem creating a privileged user.
*** Query: Do you want to proceed anyway? (yes/no) yes ←とりあえず抜ける

エラー修正

$ net localgroup
$ net localgroup Administrators sshd /ADD
$ net user cyg_server

パスワードのエラー回避

$ wmic useraccount where "Name='sshd'" set PasswordExpires=FALSE

ssh-host-configの実行(3回目)

  • やっと問題なく終了するはず

2. CYGWIN sshdの起動

$  cygrunsrv --start sshd

net start sshd' あるいは cygrunsrv -S sshd’ と入力しても起動できる。
cygrunsrv -L :登録されているサービスを一覧表示
cygrunsrv -stop <サービス名>

sshd動作確認

$ cygrunsrv --query sshd
Service             : sshd
Display name        : CYGWIN sshd
Current State       : Running
Controls Accepted   : Stop
Command             : /usr/sbin/sshd -D

3. sshクライアントからログイン

ssh cyg_server@localhost

cyg_server/そのパスワードの方を使う

補足1

鍵の生成

とりあえずしないでパスワードで接続確認した方がいい

/etc/passwd, /etc/groupの作成

mkpasswd -l > /etc/passwd
mkgroup  -l > /etc/group

 

あとから考えると不要。cygwinをインストールしたユーザーからはsshでログインできないためパスワードがおかしいのかと思ったが、そうではなくcyg_serverでログインしなければならないというオチだった。

補足2

Windowsのサービスとしての確認

Windowsへのsshdのインストールの有無、実行状態などはWindowsの「services.msc」から確認できる。サービス名は「CYGWIN sshd」である。

cygwin-sshd

コメント