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 を起動する前にどちらを利用するかを決定する必要があります!
-
RSA 認証を利用し、正確に一人のユーザのみがそのマシンにログインするという場合、sshd をそのユーザアカウントで実行させることが出来ます。この場合、
RSAAuthentication yes
が含まれるように
/etc/sshd_configを修正する必要があります。更に、rhosts 及び RSA 認証を伴う rhosts を利用する場合は、以下の内容を
sshd_configに設定します。RhostsAuthentication yes RhostsRSAAuthentication yes
-
異なるユーザアカウントでログインする必要があるのであれば、システムアカウント、 或いはユーザコンテキストを切り替えることが出来る他のユーザアカウントで sshd を起動させる必要があります。 デフォルトでは Administrators にも不可能だということに注意して下さい! 以下の特別なユーザ権利をそのユーザに対して指定する必要があるでしょう。
- 「オペレーティングシステムの一部として機能」(Act as part of the operating system)
- 「プロセスレベルトークンの置き換え」(Replace process level token)
- 「クォータの増加」(Increase quotas)
また、サービスマネージャ経由で利用するのであれば、
- 「サービスとしてログオン」(Logon as a service)
も追加します。
システムアカウントは勿論、デフォルトでこのユーザ権利を所有しています。
不幸なことに、この方法を選択した場合は NT パスワード認証を利用したログインしか利用することが出来ないので、以下の内容が含まれるように
/etc/sshd_configを変更する必要があります。PasswordAuthentication yes RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication no
しかし sshd を起動したユーザとしてなら、とにかく RSA 認証を利用してログインすることは出来ます。もしこれを望むのであれば、RSA 認証の設定を「yes」に戻して下さい。
RSAAuthentication yes
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> へとお願いします。
では、お楽しみ下さい。