CentOS6 で公開/秘密キーを設定しました - 秘密キーなしでも接続できます

CentOS6 で公開/秘密キーを設定しました - 秘密キーなしでも接続できます

CentOS 6 の VPS を使用しています。SSH 経由のログイン試行が頻繁に行われていることに気づいたので、キーベースの認証でロックダウンしたいと考えています。これまでに実行したことは次のとおりです。

クライアントマシン(OSX)で以下を実行しました

ssh-keygen -t rsa

デフォルト設定(パスフレーズなし、デフォルト名など)でこれを実行しました

クライアントに次の権限を設定します

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

次のコマンドを使用して、公開鍵を VPS 上のユーザーフォルダのルートにコピーしました (偽の名前/IP)

scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub

ここで、.ssh内にauthorized_keysファイルがないことに気が付きました。そこでtouchを使って作成しました。次にCATを使って.pubの内容をauthorized_keysファイルにコピーしました。

cat id_rsa.pub >> ~/.ssh/authorized_keys

.sshとauthorized_keysに適切な権限を設定します

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

/etc/ssh/sshd_configで次のコメントを外しました

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

その後sshdを再起動しました

service sshd restart

私が読んだところによると、公開鍵認証を有効にするには、これだけで十分だそうです。ただし、-i privatekey を指定せずに SSH を試みると、すべてのデバイスからアクセスできてしまいます。

答え1

クライアントキーがデフォルトの場所にある場合、 (または同等の設定ファイルエントリ)~/.ssh/id_$algを使用して無効にしない限り、自動的に使用されます-o IdentitiesOnly=yes。秘密キーのコピーを持たないクライアントから接続できる場合そしてパスワードを指定せずにログインした場合、サーバーの認証が正しく設定されていません。のみ秘密鍵->公開鍵認証を設定しますPasswordAuthentication no

PS: anything >>file(anything >fileまた) ファイルが存在しない場合は作成されますが、touch作成する必要はありません。また、のデフォルトのリモート ディレクトリはscpホーム ディレクトリなので、通常はそれを指定する必要はありません。

また:

RSAAuthenticationは SSHv1 用ですが、これは数十年前に壊れており、決して使用すべきではなく、長い間すべての OpenSSH バージョンでデフォルトで無効になっており、7.4 の時点ではサーバー側から完全に削除されていますが、CentOS 6 にはおそらくそれほど新しいバージョンはないと思われます。

PubkeyAuthentication yesおよびAuthorizedKeysFile .ssh/authorized_keys(plusauthorized_keys2は旧式で現在は使用されていません) はデフォルトなので、実際にコメントを外す必要はありません。

答え2

公開鍵/秘密鍵のみを許可する場合は、サーバー上でパスワード認証を明示的に無効にする必要があります。/etc/ssh/sshd_config設定を変更または追加します。

PasswordAuthentication no

また、Kerberos や GSSAPI など、使用しない他のすべての種類の認証を明示的に無効にすることも好きです。

関連情報