cygwin on SBS 2003
Windows Small Business Server 2003 (SBS 2003)にcygwin入れてます。
手順
- とりあえず通常のセットアップ。デフォルトからopenssh, rsyncを追加する。
- sshの設定
#ssh-host-config -y
Overwrite existing /etc/ssh_config file? (yes/no) yes
Generating /etc/ssh_config file
Overwrite existing /etc/sshd_config file? (yes/no) yes
Privilege separation is set to yes by default since OpenSSH 3.3.
However, this requires a non-privileged account called ‘sshd’.
For more info on privilege separation read /usr/share/doc/openssh/README.privsep.
Should privilege separation be used? (yes/no) yes
Generating /etc/sshd_config file
Warning: The following functions require administrator privileges!
Do you want to install sshd as service?
(Say “no” if it’s already installed as service) (yes/no) yes
You appear to be running Windows 2003 Server or later. On 2003 and
later systems, it’s not possible to use the LocalSystem account
if sshd should allow passwordless logon (e. g. public key authentication).
If you want to enable that functionality, it’s required to create a new
account ‘sshd_server’ with special privileges, which is then used to run
the sshd service under.
Should this script create a new local account ‘sshd_server’ which has
the required privileges? (yes/no) yes
Please enter a password for new user ‘sshd_server’. Please be sure that
this password matches the password rules given on your system.
Entering no password will exit the configuration. PASSWORD=xxxxxx
WARNING: Adding user sshd_server to local group root
Administrators failed!
Please add sshd_server to local group root
Administrators before
starting the sshd service!
User ‘sshd_server’ has been created with password ‘xxxxxxxx’.
If you change the password, please keep in mind to change the password
for the sshd service, too.
Also keep in mind that the user sshd_server needs read permissions on all
users’ .ssh/authorized_keys file to allow public key authentication for
these users!. (Re-)running ssh-user-config for each user will set the
required permissions correctly.
Which value should the environment variable CYGWIN have when
sshd starts? It’s recommended to set at least “ntsec” to be
able to change user context without password.
Default is “ntsec”. CYGWIN=
The service has been installed under sshd_server account.
To start the service, call `net start sshd’ or `cygrunsrv -S sshd’.
Host configuration finished. Have fun! - 環境変数CYGWINはntsecとした。
- sshd_configの修正。
$ chown Administrator /etc/sshd_config
- net start sshd でsshdの起動
SBS 2003を入れたマシンは主にファイルサーバーとして使う予定なので、家にあるLinux PCの重要なファイルをrsync + sshでこのファイルにバックアップしたい。なので、パスフレーズなしの公開鍵認証ができればいいんだけど、ここで大ハマりした。
結論から言うと、/usr/share/doc/Cygwin/openssh.README に解決策が載っているんだけど、そこに至るまでに3時間くらいかかった、、、
openssh.README該当部分の超訳
2003 Server には変な新機能があるんだ。サービスをSYSTEMアカウントで起動すると、そのサービスはSYSTEMアカウントが持っているほとんどのユーザー権限を持つんだけど、”トークンオブジェクトの作成”の権限は持たなくて、でもそれって公開鍵認証に必要なんだよねー^^;
まぁしょうがないので、適切な権限を持った代りのアカウントを作る、と。そのアカウントはadministratorsグループのメンバーにして、それに加えて以下の権限が必要。
トークン オブジェクトの作成
サービスとしてログオン
プロセス レベル トークンの置き換え
プロセスのメモリクォータの増加
ssh-host-configプログラムはそうした権限を持ったsshd_serverっていうアカウントを作るかどうか聞いてくるので当然Yesを選ぼう。Noを選んだ場合はまぁ勝手にしなよ。そうそう、ssh-host-configの指示には従うこと。あと、ssh-user-configはsshd_serverアカウントがあるかないかによって適切に権限を設定してくれるよ。
で、ですね、ssh-host-configに従えば万事OKのようなんだけど、これだけだとダメだった。sshd-host-configはsshd_serverアカウントを多分ローカルAdministratorsグループに入れようとしているんだろうね。でもActive Directoryのドメインコントローラではローカルアカウントは存在しないので、「管理ツール」->「Active Directoryユーザーとコンピュータ」でsshd_serverをadministratorsグループに入れてやる必要がある。
ようやくこれで公開鍵認証が使えるようになった。