WindowsでSSHデーモンを実行
MSに配置されたWindows Server 2003 R2マシンに対し、UNIX系マシンと同様なセキュアなリモートメンテナンス環境を導入すべく、Windows上でSSHデーモンを稼動させる方式を模索。
OpenSSH for Windows というものもあったが、バージョンが3.8p1と古めでしばらくメンテナンスされていない様子なのでこれは止めておくことにする。
あとはSUA(Subsystem for UNIX-based Applications)の機能としてInterrixから提供されているOpenSSHを導入する手があるので、これを採用。
(OpenSSHのバージョンも4.6で最近もアップデートされているようなのでとりあえず安心。)
以下、ややハマった箇所もあったので導入メモを残す。
SUAの導入
- 「プログラムの追加と削除」から「UNIX ベース アプリケーション用サブシステム」を選択する。
- 「はい」をクリック
- Internet Explorerが開き、SDK for UNIX-based Applications のページを表示するので、右端の「Utilities SDK」のダウンロードリンクをクリック。
- 「Download files below」をクリック
- 「Utilities and SDK for UNIX-based Appications」の各CPUアーキテクチャに合ったファイルをダウンロードする
- 「実行(R)」をクリック
- 自動的にWinZip自己解凍プログラムが起動するので、「Unzip」をクリック
- しばらくすると、セットアップウィザードが起動するので、「Next >」をクリック
- 「User name」と「Organization」を設定し、「Next >」をクリック
- 「I accept the agreement」を選択し、「Next >」をクリック
- 「Custom Installation」を選択し、「Next >」をクリック
- 以下を選択し、「Next >」をクリック
- Base Utilities
- SVR-5 Utilities
- Base SDK
- GNU Utilities
- GNU SDK
- 「Next >」をクリック
- 「Enable setuid behavior for SUA programs.」と「Change the default behavior to case sensitive」を両方選択し、「Next >」をクリック
- 「Finish」をクリック
- 再起動を要求してくるので、「Yes」をクリック
- 再起動後、メニューに「Subsystem for UNIX-based Applications」が追加されていることを確認
パッケージ管理ツール(pkg)の導入
Interop Systemでaddon-tools(http://www.suacommunity.com/)という、よく使用するツール類をパッケージにしているものが用意されている。しかし、私の環境ではこのaddon-toolsを導入すると、各ツールがうまく動作しなかった。
例えば、addon-tools導入後、bashを起動させると下記のメッセージを表示し起動しない現象が発生。
bash: error in loading shared libraries : undefined symbol: __freeaddrinfo
また、ssh起動時に、
ssh:error in loading shared libraries /usr/lib/libdl.so.5.2: undefined symbol:__argv
というメッセージを表示し、sshデーモンが起動しない現象が発生した。
LD_LIBRARY_PATHの追加、等いろいろとやってみたのだがどうもうまく動作しない。よって、パッケージ管理ツールを導入後、必要なツールを個別にインストールしていくことにする。
- Interopsystem の下記サイトより、対象となるマシンのアーキテクチャに合ったpkgインストール用シェルスクリプトをダウンロード
http://www.interopsystems.com/tools/pkg_install.htm - ダウンロードしたファイルを、/tmp(C:\windows\SUA\temp)にコピー
- Kornシェルを起動し、以下のコマンドを実行
$ cd /tmp $ sh ./pkg-current-bin35.sh
- 途中で「Member」と「Password」の入力を促されるので、Administratorのユーザ名とパスワードを入力
- 結果、下記プログラムがインストールされる
usr/local/bin/pkg_add
usr/local/bin/pkg_create
usr/local/bin/pkg_delete
usr/local/bin/pkg_info
usr/local/bin/pkg_sign
usr/local/bin/pkg_update
usr/local/bin/tkpkg
usr/bin/ls
usr/local/bin/gzip
usr/bin/sort
usr/local/man/cat1/pkg_add.1
usr/local/man/cat1/pkg_create.1
usr/local/man/cat1/pkg_delete.1
usr/local/man/cat1/pkg_info.1
usr/local/man/cat1/pkg_sign.1
usr/local/man/cat1/pkg_update.1
usr/local/man/cat1/gzip.1
usr/share/man/cat1/ls.1
usr/share/man/cat1/sort.1
bin/ftp
bin/ftp-ls
bin/pax
bin/tar
usr/share/man/cat1/pax.1
usr/share/man/cat1/ftp.1
usr/share/man/cat1/tar.1
var/db/pkg/pkg-2.9-bin/+COMMENT
var/db/pkg/pkg-2.9-bin/+CONTENTS
var/db/pkg/pkg-2.9-bin/+DESC
var/db/pkg/pax-1.6-bin
var/db/pkg/pax-1.6-bin/+COMMENT
var/db/pkg/pax-1.6-bin/+CONTENTS
var/db/pkg/pax-1.6-bin/+DESC
var/db/pkg/pax-1.6-bin/+REQUIRED_BY
var/db/pkg/ftp-3.5j-bin
var/db/pkg/ftp-3.5j-bin/+COMMENT
var/db/pkg/ftp-3.5j-bin/+CONTENTS
var/db/pkg/ftp-3.5j-bin/+DESC
var/db/pkg/ftp-3.5j-bin/+REQUIRED_BY
var/db/pkg/ls-1.2.6-bin
var/db/pkg/ls-1.2.6-bin/+COMMENT
var/db/pkg/ls-1.2.6-bin/+CONTENTS
var/db/pkg/ls-1.2.6-bin/+DEINSTALL
var/db/pkg/ls-1.2.6-bin/+DESC
var/db/pkg/ls-1.2.6-bin/+REQUIRED_BY
var/db/pkg/gzip-1.3.3.10.1-bin
var/db/pkg/gzip-1.3.3.10.1-bin/+COMMENT
var/db/pkg/gzip-1.3.3.10.1-bin/+CONTENTS
var/db/pkg/gzip-1.3.3.10.1-bin/+DESC
var/db/pkg/gzip-1.3.3.10.1-bin/+REQUIRED_BY
var/db/pkg/env_etc_irsconf-1.0-bin
var/db/pkg/env_etc_irsconf-1.0-bin/+COMMENT
var/db/pkg/env_etc_irsconf-1.0-bin/+CONTENTS
var/db/pkg/env_etc_irsconf-1.0-bin/+DEINSTALL
var/db/pkg/env_etc_irsconf-1.0-bin/+DESC
var/db/pkg/env_etc_irsconf-1.0-bin/+REQUIRED_BY
var/db/pkg/env_path_local-1.0.4-bin
var/db/pkg/env_path_local-1.0.4-bin/+COMMENT
var/db/pkg/env_path_local-1.0.4-bin/+CONTENTS
var/db/pkg/env_path_local-1.0.4-bin/+DEINSTALL
var/db/pkg/env_path_local-1.0.4-bin/+DESC
var/db/pkg/env_path_local-1.0.4-bin/+REQUIRED_BY
var/db/pkg/env_manpath_local-1.0.7-bin
var/db/pkg/env_manpath_local-1.0.7-bin/+COMMENT
var/db/pkg/env_manpath_local-1.0.7-bin/+CONTENTS
var/db/pkg/env_manpath_local-1.0.7-bin/+DEINSTALL
var/db/pkg/env_manpath_local-1.0.7-bin/+DESC
var/db/pkg/env_manpath_local-1.0.7-bin/+REQUIRED_BY
ツール類のインストール
bashのインストール
Korn Shell を起動し、下記コマンドを実行。
$ pkg_update -L bash
途中、「pkg_update: Cannot find package ”.: Undefined error: 0」というメッセージが数行表示されるが、最後「Done.」となればインストール完了。
「C:\Documents and Settings\All Users\スタート メニュー\プログラム\Subsystem for UNIX-based Applications」にある「Korn Shell」のショートカットをコピーし、名称を「bash Shell」に変更。
当該ショートカットのプロパティを選択し、リンク先を「C:\WINDOWS\posix.exe /u /c /usr/local/bin/bash -l」に変更。これでスタートメニューからbash シェルを起動できるようになる。
vimのインストール
Korn Shell, またはbash Shell を起動し、下記コマンドを実行。
$ pkg_update -L bash
インストール完了後、「vim」と入力してvimを起動させようとすると、
$ vim vim: error in loading shared libraries libncurses.so: cannot open shared object file: No such file or directory
となる。
よって、下記のように環境変数「LD_LIBRARY_PATH」に「/usr/local/lib」を追記し、再起動すると正常にvimが起動するようになる。
OpenSSH のインストール
上で記載したように、Interop Systemで用意されているaddon-tools 付属のOpenSSHでは実行させると下記エラーを表示し、うまく起動しない。
ssh:error in loading shared libraries /usr/lib/libdl.so.5.2: undefined symbol:__argv
SUAコミュニティのフォーラムに「pkg_update -L openssh でアップデートしろ」、との情報があったが効果なし。結果として、addon-toolsを使用せずに、これまで記載した方法で必要なツール類を1つ1つ導入し、OpenSSHも同様の方法でインストールすると問題なく動作する。
OpenSSHをインストールするには、Korn Shell, または bash Shell から下記コマンドを実行。
$ pkg_update -L openssh Percent download complete/package: 100% |**************************************************| openssh pkg_update: Cannot find package ''. pkg_update: Cannot find package ''. Generating public/private rsa1 key pair. Your identification has been saved in /usr/local/etc/ssh_host_key. Your public key has been saved in /usr/local/etc/ssh_host_key.pub. The key fingerprint is: : Starting sshd daemon sshd started Done.
インストール終了後、念のため再起動し、コマンドプロンプトより「netstat -a」を実行してsshのポートがリッスン状態にあることを確認。
また、リモートクライアントからputty等のSSHクライアントツールを使用し、正しくssh接続できることを確認する。
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply