SSHキーを特定のIPアドレスに制限する方法は?

SSHキーを特定のIPアドレスに制限する方法は?

一部のSSHキーを使用して、自分のローカルネットワーク(192.168.1。*)から(一般的にアクセス可能な)SSHサーバーにログインできるようにしたいが、ローカルネットワークの外部でキーを使用できるようにしたくありません。
外部アクセスに別のキーを使用したい(どちらの場合も同じユーザー)。

SSHでそのようなことは可能ですか?

答え1

はい。

~/.ssh/authorized_keysサーバー上のファイルでは、各項目は次のようになります。

ssh-ed25519 AAAAC3NzaC1lZSOMEKEYFINGERPRINT comment

(または類似)

オプションを含めることができるオプションの最初の列があります。これについてはマニュアルに記載されていますsshd

オプションの1つは

from="pattern-list"

公開鍵認証に加えて、リモートホストの正式名またはIPアドレスをコンマ区切りのパターンリストに表示する必要があることを指定します。モードの詳細については、ssh_config(5)のモードを参照してください。

ホスト名またはアドレスに適用できるワイルドカードの一致に加えて、fromセクションでは、CIDRアドレス/マスク長表記を使用してIPアドレスを一致させることもできます。

このオプションの目的は、オプションでセキュリティを強化することです。公開鍵認証自体は、ネットワーク、ネームサーバー、またはそのいずれか(鍵を除く)を信頼しません。ただし、誰かが何らかの方法で鍵を盗むと、鍵を介して侵入者がどこからでもログインできます。世界に。この追加オプションを使用すると、盗まれたキーを使用することがより困難になります(キーに加えてネームサーバーおよび/またはルーターも破損する必要があります)。

~/.ssh/authorized_keysこれは変更可能でなければならないことを意味します。

ssh-ed25519 AAAAC3NzaC1lZSOMEKEYFINGERPRINT comment

到着

from="pattern" ssh-ed25519 AAAAC3NzaC1lZSOMEKEYFINGERPRINT comment

patternパブリックDNS名、IPアドレス、または一部のネットワークブロックなど、接続しようとしているクライアントホストと一致するパターンはどこにありますか?

from="192.168.1.0/24" ssh-ed25519 AAAAC3NzaC1lZSOMEKEYFINGERPRINT comment

(これにより、ネットワーク上のホストでのみこのキーを使用できます192.168.1.*。)

答え2

from="192.168.1.0/24"ファイルの前に公開鍵を追加するだけです.authorized_keys。全行は次のようにする必要があります。

from="192.168.1.0/24" ssh-rsa AAAA....

関連情報