
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 など、使用しない他のすべての種類の認証を明示的に無効にすることも好きです。