FreeBSD/SSHD
SSHD †
FreeBSDでは標準でsshdが起動するようになっていますが、
5.0くらいからsshdがSSH2が標準になっている為、telenet+ttsshでログインすることができないようになっています。
設定ファイルを編集して、telnet+ttsshでログインできるようにします。
ssh/tcp: bind: Address already in use というエラーが頻繁しているのを発見
解決方法を記述した。
- sshd_configの編集
- /etc/inetd.confを確認
- /etc/rc.confの確認
- 起動
- パスワードミス回数にしきい値を設定
- ssh/tcp: bind: Address already in use というエラーが頻繁
- sshの接続が切断されないようにする。
環境 †
/etc/ssh/sshd_config の編集 †
以下の2箇所を編集する。
-----------------------------編集個所---------------------------------- #可能なプロトコルのバージョンを指定 SSH2のみ(今回修正してSSH1も接続可能に戻し) #Protocol 2 Protocol 2,1 ・・・ # 認証を可能にするためには YESを指定する # パスフレーズだけじゃなくて、一般のパスワードで利用したい場合にはこれを変更しないとダメ # Change to yes to enable built-in password authentication. #PasswordAuthentication no PasswordAuthentication yes -----------------------------編集個所----------------------------------
/etc/inetd.confを確認 †
rc.confでのssh起動とinetdでの起動とできるようになっているが、両方が起動していると
ポートが塞がっていて使えないとエラーがでる。
/etc/inetd.confを確認し下記の部分がコメントアウトになっていることを確認。
なっていなければ、コメントアウト(#)をつける。
-----------------------------確認個所---------------------------------- #ssh stream tcp nowait root /usr/sbin/sshd sshd -i -4 #ssh stream tcp6 nowait root /usr/sbin/sshd sshd -i -6 -----------------------------確認個所----------------------------------
etc/rc.confの確認 †
/etc/rc.confにてsshが有効になっているか確認する。
以下の記述が入っていればOK。
sshd_enable="YES"
起動 †
# sh /etc/rc.d/sshd start
後は、sshで接続してみて、テストしてください。
パスワードミス回数にしきい値を設定 †
たとえば、SSH なら、
ssh stream tcp nowait/0/3/2 root .....
なんて記述をしておきます。
この 0/3/2 って記述ですが。 : : : 1 2 3 1 最大子プロセス数(0は無制限) 2 同一IPからの1分以内の最大接続数 3 同一IPからの最大子プロセス数
となります。
上記の設定の場合は inetd から生成される ssh のプロセス数は無制限で、
同一IPからの一分以内のコネクションリクエスト数は3回まで、さらに同一IPから
接続が確立して生成された ssh プロセス数は2つまで。ということになります。
1分以内に接続に3回失敗すると、そのIPからのコネクションリクエストは
refuse されます。が、1分経過するとまた許可されます。
- ssh/tcp: bind: Address already in use というエラーが頻繁
■原因
sshが重複して起動していたためであった.つまり,FreeBSDのインストール時に,
sshdのログインを許すか,という問いにyesと答えた上に,inetdからもsshdが起動される
ように設定していたことが原因であった.
■解決方法
上記の状態では,設定ファイル /etc/rc.conf において,sshd_enable="YES" inetd_enable="YES"
の両方が存在し,さらに /etc/inetd.conf において,ssh stream tcp nowait root /usr/sbin/sshd sshd -i -4
となっている.
sshdはinetdから起動すればふつうは十分であるから,/etc/rc.conf においてsshd_enable="YES"
を削除し,マシンを再起動した.
rootでログインできないようにする。 †
# vi /etc/ssh/sshd_config PermitRootLogin yes ↓ PermitRootLogin no
sshの接続が切断されないようにする。 †
# vi /etc/ssh/sshd_config ClientAliveInterval 60 ClientAliveCountMax 5 # /etc/rc.d/sshd restart
60秒x5回=300秒