web-dev-qa-db-ja.com

SSHのパスワード認証を無効にする方法

Linuxで(すべてのユーザーの)SSHのパスワード認証を無効にしたいのですが。 PasswordAuthenticationをsshd_configファイルのnoに設定していますが、秘密鍵を使用してログインする必要はありません。

pSログインしようとしたときに秘密鍵ファイルを指定しています。

2
HHH

パスワード認証を無効にする前に、公開鍵認証を構成し、それを使用していることを確認する必要があります。まだ行っていない場合は、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接続を開始し、接続が意図したとおりに機能することを確認します。この手順は重要です。開いたままのシェルは、サーバー上のルートシェルに到達しないように誤って自分をロックアウトした場合に、問題を解決する最後の機会を与えるからです。

3
kasperd

サーバーでSSHパスワード認証を無効にし、rootとしてログインできないようにします。

これを行う前に、パスワードが設定されたユーザーがサーバー上にいることを確認してください。そうしないと、サーバーからロックアウトされます。

$ vim /etc/ssh/sshd_config

次の行を編集/追加します

  • PermitRootLoginいいえ
  • PasswordAuthenticationいいえ
  • UsePAMいいえ
  • UseLoginいいえ

コマンドを実行する

$ 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/
0
Eric