Skip to main content.

openssh.README

OpenSSH は広く利用されているフリーの SSH の実装です。本文書は、Cygwin 本家から提供されている openssh パッケージ(バージョン 3.0.2p1)に含まれている openssh-3.0.2p1.README の日本語訳です。

このパッケージは Cygwin 1.3 に対する OpenSSH の実質的な移植です。

3.0.1p1-2 からの重要な変更点
このバージョンには Windows 9x/Me システムで sshd をサービスとして登録する機能が追加されました。 -D-d が指定されなかった場合に有効となります。
2.9p2 からの重要な変更点
Cygwin はバージョン 1.3.2 よりパスワードなしでユーザコンテキストを切り替えることが出来るようになりました。 OpenSSH は 1.3.2 以降のバージョンでこの機能を利用できます。 この機能を利用するには「ntsec」を有効にする必要があることに注意して下さい。
2.3.0p1 からの重要な変更点

「ntea」又は「ntsec」を利用する場合、ホスト鍵ファイルと秘密鍵ファイルの所有者、 及びパーミッションビットに注意する必要があります。 ホスト鍵ファイルは sshd を起動する NT アカウントによって保持されていなければなりません。 ユーザ鍵ファイルはそのユーザによって保持されている必要があります。 秘密鍵(ホスト鍵及びユーザ鍵)のパーミッションビットは少なくとも rw------- (0600)でなければなりません!

それらのファイルが NTFS ファイルシステム(推奨します)上にあり、 「ntsec」を利用している場合のみ、これが強制されるということに注意して下さい。 NTFS ファイルシステムを利用するのは、FAT/FAT32 ファイルシステムには基本的なセキュリティ機能が欠落しているからです。


OpenSSH をインストールするのが初めてであれば、

/usr/bin/ssh-host-config

を実行して大域的な設定ファイルとサーバ鍵を生成することが出来ます。

このバイナリアーカイブには /etc にあるデフォルトの設定ファイルが含まれていないということに注意して下さい。 ssh-host-config が実行されない限り、これらのファイルは生成されません。

既にインストールされている OpenSSH をアップグレードするのであれば、 既存の設定ファイルを新しい位置へと移動し、古い位置に置かれている設定ファイルを消去するために、上記の ssh-host-config を実行することが出来ます。

テスト及び付き添いのないインストール(*1)をサポートすべく、ssh-host-config は幾つかのオプションを受け付けます(*2)

利用法: ssh-host-config [オプション]...
オプション:
    --debug      -d        シェルのデバッグ出力を有効にする
    --yes        -y        全ての質問に対して自動的に「yes」と答える
    --no         -n        全ての質問に対して自動的に「no」と答える
    --port       -p <n>    sshd が接続を受け付けるポートを n にする

更に、NT/W2K で実行した場合、ssh-host-config は今や sshd をサービスとしてインストールするかどうかを確認します。このためには cygrunsrv をインストールする必要があります。

ユーザ用の秘密鍵及び公開鍵は、そのユーザのアカウントで

/usr/bin/ssh-user-config

を実行することによって作成出来ます。

テスト及び付き添いのないインストールをサポートすべく、ssh-user-config は幾つかのオプションを受け付けます(*3)

利用法: ssh-user-config [オプション]...
オプション:
    --debug      -d        シェルのデバッグ出力を有効にする
    --yes        -y        全ての質問に対して自動的に「yes」と答える
    --no         -n        全ての質問に対して自動的に「no」と答える
    --passphrase -p word   パスフレーズとして「word」を自動的に利用する

sshd は cygrunsrv.exe から起動するサービスとして(NT/W2K での推奨)、 又は inetd 経由として(デーモンの起動が非常に遅くなります!)、 或いはコマンドラインからの起動(9X/Me での推奨)の何れかとしてインストールします。

cygrunsrv 経由で sshd をデーモンとして起動するのであれば、sshd に「-D」オプションを指定する必要があります。そうしなければ、サービスは完全に起動しません。

inetd 経由で起動する場合、sshd を例えば /usr/sbin/in.sshd としてコピーし、inetd.conf ファイルに以下の行を追加します。

sshd stream tcp nowait root /usr/sbin/in.sshd sshd -i

更に、${SYSTEMROOT}/system32/drivers/etc/services に以下の行を追加する必要があります(*4)

sshd         22/tcp          #SSH daemon

以下の制限は Cygwin バージョン 1.3.1 以前に対してのみ適用されます。

sshd の認証方法は二つのうちから一つ選択出来ます。 sshd を起動する前にどちらを利用するかを決定する必要があります!


OpenSSH はユーザの設定ファイルを探し出すために $HOME の値を決して利用しないという点に注意して下さい。 OpenSSH は常にホームディレクトリとして /etc/passwd 中の pw_dir フィールドの値を利用します。 もし /etc/passwd 中でホームディレクトリが定義されていなければ、ルートディレクトリが代わりに利用されます!

sources.redhat.com にある「login」の移植版で行うのと同様の設定を行うことによって、CYGWIN=ntsec の全ての機能を利用することが出来ます。

pw_gecos フィールドは追加のフィールドを含みます。 これは(大文字の!)「U-」から始まり、ドメインとユーザ名がバックスラッシュで区切られてそれに続きます。

注意: SID は pw_gecos最後のフィールドとして残しておかなければなりません! ところで、pw_gecos のフィールド区切り文字はコンマです。 pw_name にあるユーザ名には好きな名前が利用出来ます。

domuser::1104:513:John Doe,U-domain\user,S-1-5-21-...

今や、「domuser」という名前は telnet のログイン名として利用出来ます! 更に、もし NT のログイン名が気に入らないのであれば、これはローカルユーザに対しても利用可能です。 ドメイン名を省く必要があるだけです。

locuser::1104:513:John Doe,U-user,S-1-5-21-...

SSH2 のサーバ鍵とユーザ鍵も同様に、ssh-*-config を利用して生成可能です。

ソースからビルドする方のために、Cygwin のバイナリ配布で利用した configure のオプションを以下に挙げておきます。

--prefix=/usr \
--sysconfdir=/etc \
--libexecdir='${exec_prefix}/sbin \
--with-pcre

OpenSSH のビルドを行うには zlib、openssl そして regex パッケージが必要です。「--with-pcre」オプションを利用するなら pcre パッケージが必要となります。

リクエスト、エラーレポートなどは <cygwin@cygwin.com> へとお願いします。

では、お楽しみ下さい。

*1: 訳注: 原文の表現は「unattended installation」です。

*2: 訳注: 実際の ssh-host-config の出力は英語です。

*3: 訳注: 実際の ssh-user-config の出力は英語です。

*4: 訳注: SYSTEMROOT の値はコマンドプロンプト上で 「set SYSTEMROOT」を実行することにより確認出来ます。