私のアパートには、他の場所にあるクラウドでバックアップを実行するために使用する小さなSBCが実行されています。毎晩、私のクラウドはSFTPを介してSBCに接続し、私のデータの新しいバックアップタイムスタンプを作成します。
これは、SSHポートをインターネットに公開する必要があることを意味するため、SSH設定は非常に安全であることを望みます。 1人の特定のユーザーだけがログインでき、証明書ベースのログインのみが許可されます。また、インターネットからホームネットワークにポート22要求を転送する必要がないようにポートを変更します。
しかし、自宅にいるときに他のアカウント(sudoが利用可能)と通常のポート22を使用するパスワードを使用してSBCにSSHに接続できるようにしたいです。プライベートIPアドレスブロックで非常に具体的なIPアドレス(192.168.1.10)のみを許可したいと思います。他の場所からSBCにアクセスする必要がある場合は、VPNを使用してルーターにログインすると、ホームネットワーク内でSBCに接続するための正しいローカルIPアドレスが割り当てられます。
私はsshd_configでこれらを設定する方法を知っていますが、これらのさまざまなポリシーを特定のポートに適用する方法はわかりません。私はHostディレクティブを使用できることを知っていますが、私が知っている限り、これはポートではなくホスト名にのみ影響します。
答え1
あなたが探しているようですMatch
構成項目を条件付きで適用するためのディレクティブです。たとえば、次を追加できますsshd_config
。
Match LocalPort=22 Address="192.168.1.*"
PasswordAuthentication yes
AllowUsers username
パスワード認証を許可し、username
ポートに接続している間のみログインを許可します。22
そしてIPマッチングホストから192.168.1.*
模様。
この例では、基本構成がより制限的であると仮定します。つまり、username
デフォルトではログインを許可せず、パスワード認証を許可しません。
これらの条件付きブロックは、構成ファイルの一番下に追加する必要があります。ブロックは、Match
後続のコマンドまたはファイルの終わりでのみ終了するためです。Match
また、順序も重要です。構成パラメーターに見つかった(および一致する)最初のディレクティブが使用されます。