cygwin on SBS 2003

Windows Small Business Server 2003 (SBS 2003)にcygwin入れてます。
手順

  1. とりあえず通常のセットアップ。デフォルトからopenssh, rsyncを追加する。
  2. 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!
  3. 環境変数CYGWINはntsecとした。
  4. sshd_configの修正。
    $ chown Administrator /etc/sshd_config
  5. 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グループに入れてやる必要がある。
ようやくこれで公開鍵認証が使えるようになった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です