LoginSignup
13
16

More than 5 years have passed since last update.

sshd_configで接続元によって認証方法を変更するための設定

Last updated at Posted at 2019-03-27

前置き

SSHのサーバ側の設定についてです。
Linux端末にSSH接続する時、接続元によってSSHの認証方法を切り替えた時のメモ。

  • 環境
    • Ubuntu 16.04.3 LTS
  • 編集ファイル
    • /etc/ssh/sshd_config

「外部アクセスは公開鍵認証、内部アクセスはパスワード認証」という設定を目指します。
sshd_configの基礎的なこと(公開鍵認証の設定方法とか)がわかっていることを前提として記載します。

Matchによる設定

sshd_configにMatchを書くことによって、接続元IP、ポート、ユーザなどによって設定を変えることができます。

条件が一つの場合

まずは開発端末(1台)からのアクセスをMatchで分岐させてみます。

# パスワード認証を無効にする
PasswordAuthentication no

# 192.168.1.11(開発端末のIP)からのアクセスの場合、パスワード認証を有効にする(上側の設定を上書きする)
Match Address 192.168.1.11
  PasswordAuthentication yes

Matchを複数書く場合

Matchの範囲は「次のMatchまで」または「ファイル末尾まで」です。
なのでMatchsshd_configの途中に書くことはできません。

Match Address 192.168.1.11
  PermitEmptyPasswords yes # 192.168.1.11からアクセスした時に適用される
Match User ssh_user
  PasswordAuthentication yes # ユーザ"ssh_user"でログインしようとした時に適用される

RSAAuthentication yes # ユーザ"ssh_user"でログインしようとした時に適用される。インデントは関係ない(無視される)

Matchに書く条件が複数の場合

条件はスペース区切りで複数書けます。
IPはカンマ区切りで複数書けます。プレフィックスを使った書き方もできます。

私の場合、「内部アクセスの場合はパスワード認証」とする設定は以下のようになりました。

# 二つのポートを有効にする
Port 22
Port 10022

# パスワード認証を無効にする
PasswordAuthentication no

# 内部IPからのアクセスで、さらにポート番号が10022だった場合、パスワード認証を有効にする
Match Address 10.0.0.0/22,192.168.1.0/24 LocalPort 10022
  PasswordAuthentication yes

さらに詳しく知りたい場合

基本的なことはもちろんウェブ検索でわかると思います。

ですが複雑で細かな設定をしたい場合は、SSHサーバでman sshd_configと打って、Matchに関する記述を確認することがおすすめです。
環境によって使える条件が少しずつ違うらしいです(CentOS6とCentOS7では結構違うらしい)。

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16