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ファイルがないことがわかりました。だからタッチを使って作りました。その後、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 秘密鍵を指定せずに SSH を試みると、すべてのデバイスで許可されます。
答え1
クライアントキーがデフォルトの場所にある場合(または同等の設定ファイルエントリ)を使用して無効にしない限り、~/.ssh/id_$alg
自動的に使用されます。-o IdentitiesOnly=yes
秘密鍵のコピーがないクライアントから接続できる場合そしてパスワードを指定しないと、サーバーの認証設定が正しくありません。使いたいならただ秘密鍵 - >公開鍵認証、設定PasswordAuthentication no
。
PS:(anything >>file
およびanything >file
)ファイルが存在しない場合は不要な場合はファイルを作成してくださいtouch
。デフォルトのリモートディレクトリscp
はホームディレクトリなので、通常は指定する必要はありません。
返品:
RSAAuthentication
何十年も前に破損し、絶対に使用してはいけないSSHv1で動作し、すべてのOpenSSHバージョンで長い間デフォルトで無効になっており、CentOS 6ではそうではないと予想されますが、7.4からサーバー側から完全に削除されました最新バージョンで入手してください。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
(さらにこれはauthorized_keys2
レガシーで廃止されました)がデフォルトであるため、実際にコメントを削除する必要はありません。
答え2
公開/秘密鍵のみを許可するには、サーバーでパスワード認証を明示的に無効にする必要があります。設定を変更または追加する場合/etc/ssh/sshd_config
:
PasswordAuthentication no
また、KerberosやGSSAPIなど、未使用の他のすべてのタイプの認証を明示的に無効にしたいと思います。