![]() |
running-dog.net。しかし、自分が一番落ち着かない。かけまわっている子犬のような状態。そんな毎日をブログで綴ってみました。 FreeBSD・PC・UNIX・プログラム・MacOSX・iPhone3G ネタなど技術的・趣味的なネタについて色々書いてみたいと思います。 また、最近は Microsoft Windows ネタも増えてきたかなぁ。などとも思っておりますが、併せて宜しくお願いします。 |
|
検索
カテゴリー
フィードを取得
Special Thanks.
Please click now!!
sshd を別ポートで起動してみる。
新年明けましておめでとうございます。今年も宜しくお願いします。
今年の一発目。FreeBSD ネタですが、sshd を port:22 ではないポートで起動するようにしてみたいと思います。そんなの簡単じゃん。て?そりゃーそーだけどさー。rcNG な起動スクリプトを書くのが難儀なのよ。
port:22 で起動する sshd は /etc/rc.conf に
| sshd_enable="YES" |
と書けば良いのだけど、これとは別に、例えば port:22022 で sshd を起動したい。どうしてか?と、言えば網内では port:22 で ssh するんだけど、BB ルータの外側から各サーバにダイレクトに ssh したい場合、個々のサーバで sshd を別ポートで起動して、BB ルータ側でポートの転送をしてあげればダイレクトに入れるよねー。って感じですかね。
なんだよー。そんなの IPv6 あればできるじゃん。と思うんですけど、IPv4 の世界しか無い場合は不可能なので・・。
で、ここまでが前置きで、サーバを起動したときに sshd を port:22022 で起動するようにスクリプトを書くわけです。しかし、これがまた大変・・。例えば、sshd だけでなく、httpd を port:8080 で起動するスクリプトはどうするのだ?とか、色々出てきてですねぇ・・。
一応できたスクリプトがこんな感じ。
|
#!/bin/sh port="22022" . /etc/rc.subr name="sshd_diff_port" load_rc_config $name command_args="-o PidFile=${sshd_diff_port_pidfile} -p ${port}" run_rc_command "$1" |
簡単かぁ?これを書くために jman rc.subr してじっくりと眺めます。後はコマンド、今回の場合は sshd ですが、それのオプションをじっくりと調査します。
で、スクリプト名は sshd_diff_port としました。command_args で sshd のオプションを書きました。/etc/rc.conf.local には以下のように書けば起動できることでしょう。
| sshd_diff_port_enable="YES" |
良かった良かった。
それにしても rcNG スクリプトを書く上で疑問な点がまだ残っています。
スクリプトを起動してその中から実際のデーモンを起動した場合(firefox みたいなイメージかな) stop ができない。例えば kdm は スクリプトでそれを起動時に呼ぶのだけど、その中では kdm-bin をキックしている。その場合、stop オプションで実行しても kdm が終了しない。pidfile=${kdm_pidfile} を記述しても 以下のメッセージが出力され終了できない。なんで〜(?_?)。ちょっとだけrc.subr 見てみたけど $name とかが絡んでいる? けど、実際のプロセスは kdm ではなく、kdm-bin なのよー。どうすれば kill できるのー?
| kdm not running? (check /var/run/kdm.pid). |
で、できたスクリプトがこれ。stop は受け付けてくれないので rc スクリプト内で完結するようにした。reload も stop 部分は自前にして start だけ rc.subr に任せた。ダサいなぁ・・。
|
#!/bin/sh # Define these smartd_* variables in one of these files: . /etc/rc.subr name="kdm" load_rc_config $name command="/usr/local/kde4/bin/kdm" case $1 in run_rc_command "$1" |
httpd を 8080 で起動するスクリプトはもう、書くのもイヤになっちゃった・・。どこかに rc スクリプトのサンプル置き場とか無いかなぁ?
本当に書き方、よく分からないや・・。きっと rc.subr 眺めて書くんでしょうなぁ・・。トホホ・・。
Linux の rc スクリプトも汚いと思っていたけど、最近の FreeBSD の rc スクリプト書くのも、簡単なのは良いのだけど、ちょっと何かやろうとしたら全然書けない・・。トホホ・・。
このエントリーのトラックバックURL:
http://www.running-dog.net/mt333/mt-tb.cgi/110
なんか、とある方から教えていただいたのですが、sshd_config の中で Port 行が複数書けるので、port ごとに sshd を起動する必要は無いらしい・・。
一個のデーモンが複数の port を LISTEN してくれる・・。
もっと早く知っていれば・・。orz。
投稿者 たかちゃん。 | 2009年01月07日(水) 17:32
やぁ、久しぶり。
まだ日記続いてたんだぁ。
投稿者 むちむち隊長 | 2009年01月12日(月) 11:26
おぉーー。むちむち隊長っ!!
お久しぶりです。元気でしたか?僕はまだこんなことしているけど、相変わらずバイク乗っていますか?
もっちさんも元気ですか?
なんか懐かしいですー。
投稿者 たかちゃん。 | 2009年01月12日(月) 13:27