Linuxで(すべてのユーザーの)SSHのパスワード認証を無効にしたいのですが。 PasswordAuthentication
をsshd_configファイルのnoに設定していますが、秘密鍵を使用してログインする必要はありません。
pSログインしようとしたときに秘密鍵ファイルを指定しています。
パスワード認証を無効にする前に、公開鍵認証を構成し、それを使用していることを確認する必要があります。まだ行っていない場合は、ssh-keygen
を使用してキーペアを生成できます。
鍵ペアは、秘密鍵と公開鍵で構成され、ファイル名の最後に.pub
が付いています。公開鍵は、タイプ、公開鍵、コメントを含む1行で構成されます。デフォルトのコメントには含まれていないため、コメントを編集して、鍵ペアが生成された日付を含めると便利です。
ログインしているアカウントの.ssh/authorized_keys
にその1行を入れる必要があります。
将来的にsshを使用してサーバーに接続するときに、ログインするためのパスワードを要求されなくなります。キーを作成するときに入力した場合、キーのパスフレーズを要求される場合があります。ログインするたびにパスフレーズの入力を求められないようにするには、ssh-agent
を使用します。
サーバーで/etc/ssh/sshd_config
を編集してPasswordAuthentication
行を見つけ、次のように作成できます。
PasswordAuthentication no
ファイルにPasswordAuthentication
行がない場合は、追加する必要があります。デフォルト値が何であるかを知らせるコメントがあるかもしれません。その行の#
を削除してコメントから外すか、コメントの後にPasswordAuthentication
行を追加できます。
変更を有効にするには
service ssh reload
サーバーのルートとして。このコマンドはUbuntuにあり、ディストリビューション間で若干異なる場合があります。 screen
セッションでコマンドを実行することをお勧めします。これにより、実行中にサーバーへの接続が失われた場合でもreload
が完了します。
変更を加えたら、新しいウィンドウを開いて別のSSH接続を開始し、接続が意図したとおりに機能することを確認します。この手順は重要です。開いたままのシェルは、サーバー上のルートシェルに到達しないように誤って自分をロックアウトした場合に、問題を解決する最後の機会を与えるからです。
サーバーでSSHパスワード認証を無効にし、rootとしてログインできないようにします。
注これを行う前に、パスワードが設定されたユーザーがサーバー上にいることを確認してください。そうしないと、サーバーからロックアウトされます。
$ vim /etc/ssh/sshd_config
次の行を編集/追加します
コマンドを実行する
$ service ssh restart
クライアント上に新しいSSHキーを作成します(例)
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C server1 -f server1
SSHキーをサーバーにコピーする
ssh-copy-id -i server1.pub username@server-ip
新しいキーを使用してサーバーに接続します
vim ~/.ssh/config
次の行を追加します
Host ip-of-server
User yourUsername
IdentifyFile /home/yourUsername/.ssh/server1
サーバーに接続する
ssh server-ip
ログインするサーバーのファイルとフォルダーのアクセス許可を確認します。許可が緩すぎる場合は機能しません。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/