server-memo.net

sshdで「IPv4」「IPv6」のどちらかのプロトコルのみ接続させる方法

      2016/01/22

sshdで接続させるIPプロトコルを指定する方法です。

設定方法

「/etc/ssh/sshd_config」の「AddressFamily」部分を変更することで、接続させるIPプロトコル指定を行うことができます。

設定書式

AddressFamily [接続許可プロトコル]

接続許可するプロトコル設定は下記3通りとなります。

  • any IPv4とIPv6両方接続可能(初期値)
  • inet IPv4のみ接続可能
  • inet6 IPv6のみ接続可能

設定

設定ファイルのバックアップを行ってから作業をしていきます。

# cp - /etc/ssh/sshd_config /etc/ssh/sshd_config_yyyymmdd
# vi /etc/ssh/sshd_config

変更箇所

「AddressFamily」の部分を変更します。

変更前

「#」がついているのでコメントとなっていますが、デフォルトの設定は「any」となっていて、「IPv4」「IPv6」両方のプロトコルで接続できる設定となっています。

#AddressFamily any

IPv4のみ接続させる場合

「#」を削除し、「any」の部分を「inet」に変更します。

AddressFamily inet

IPv6のみ接続させる場合

「#」を削除し、「any」の部分を「inet6」に変更します。

AddressFamily inet6

設定反映

sshdサービスの設定を再読み込みすることで、設定を反映させることが出来ます。

ただし、設定を間違ったりするとSSHで接続することが出来なくなりますので、現在接続してるSSHの接続は絶対に切断しないでください。

CentOS7の場合

systemctl reload sshd

CentOS6までの場合

servcie ssh reload

動作確認

設定したIPプロトコルでのみssh接続が出来ることを確認してください。

設定失敗例

「ListenAddress」の設定でIPv4アドレスを設定しているのに、「AddressFamily」で「inet6」とか設定すると、「Address family for hostname not supported」と怒られてsshdサービスの起動が失敗します。

 - SSH