FreeBSD/SSHD の変更点
*''SSHD'' [#zcf653f8]
FreeBSDでは標準でsshdが起動するようになっていますが、~
5.0くらいからsshdがSSH2が標準になっている為、telenet+ttsshでログインすることができないようになっています。~
設定ファイルを編集して、telnet+ttsshでログインできるようにします。~
~
ssh/tcp: bind: Address already in use というエラーが頻繁しているのを発見~
解決方法を記述した。~
+[[''sshd_configの編集''>#A]]
+[[''/etc/inetd.confを確認''>#B]]
+[[''/etc/rc.confの確認''>#C]]
+[[''起動''>#D]]
+[[''パスワードミス回数にしきい値を設定''>#F]]
+[[''ssh/tcp: bind: Address already in use というエラーが頻繁''>#G]]
+[[sshの接続が切断されないようにする。>#j15874c2]]
**''環境'' [#ff15db41]
FreeBSD 5.4~
FreeBSD 6.0~
**''/etc/ssh/sshd_config の編集''&aname(A); [#h941499b]
以下の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を確認''&aname(B); [#mf887cb1]
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の確認''&aname(C); [#e8988b11]
/etc/rc.confにてsshが有効になっているか確認する。~
以下の記述が入っていればOK。~
sshd_enable="YES"
**''起動''&aname(D); [#m964518c]
# sh /etc/rc.d/sshd start
後は、sshで接続してみて、テストしてください。~
**''パスワードミス回数にしきい値を設定''&aname(F); [#y1ef7414]
たとえば、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 というエラーが頻繁''&aname(G);~
~
■原因~
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でログインできないようにする。 [#jbf22ed5]
# vi /etc/ssh/sshd_config
PermitRootLogin yes
↓
PermitRootLogin no
**sshの接続が切断されないようにする。 [#j15874c2]
# vi /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 5
# /etc/rc.d/sshd restart
60秒x5回=300秒