SSHクライアントはデフォルトでパスワードを要求します。キーを使用するようにどのように設定しますか?

SSHクライアントはデフォルトでパスワードを要求します。キーを使用するようにどのように設定しますか?

私のサーバーでパスワードと公開鍵認証の両方を使用できます。明示的に指定されたキーを使用してクライアントからログインできます。

ssh user@host -i id_rsa

鍵ファイルを指定しない場合は、パスワードの入力を求められます。しかし、デフォルトではキーファイルを使用してログインしたいと思います。

~/.ssh/configにいくつかの内容を入れることができるヒントを見つけました。だから、次のように指定しました。

Host xxx
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    User uuu

構成が解釈されます。ユーザー "uuu"を使用しますが、キーファイルはまだ無視されます。 sshにデフォルトでそれを使用させるにはどうすればよいですか?

答え1

ファイルモードが0600()のディレクトリ~/.sshと秘密鍵がある場合は自動的に使用され、公開鍵認証が失敗した場合にのみパスワードが必要です。これらの条件がすべて満たされていることを確認してください。このオプションは通常、認証が必要な場合に使用されます。id_rsa~/.ssh-rw-------ssh-iその他キー。

答え2

構成ファイルは次のようにする必要があります。

Host xxx
  User user
  IdentityFile ~/.ssh/id_rsa

ファイルが正しいことを確認する必要があります。

~/.ssh/id_rsa : rwx------

リモートホストから:

  • /home/user: グループおよび他のユーザーは書き込み権限を持っていません。
  • /home/user/.ssh:rwx------

リモートホストのログファイルを確認すると、いくつかのエラーメッセージが表示されます。

tail -f /var/log/auth.log

答え3

SSHをサポートするサーバーがあり、サーバーに接続するクライアントがあると仮定すると、クライアントコンピューターで秘密鍵と公開鍵を生成し、そのサーバーに公開鍵をコピーする必要があります。

これを行う前に、SSHサーバーがクライアント認証キーを探している場所を確認する必要があります。 SSHサーバー構成ファイル/etc/ssh/sshd_configを確認し、次の行を見つける必要があります。

AuthorizedKeysFile      .ssh/authorized_keys

これは、サーバーがauthorized_keys各ユーザーのホームディレクトリにあるfileという.sshフォルダから、そのユーザーにログインを許可する公開鍵を検索することを意味します。

クライアントが生成したSSHキーを使用したと言ったように、ログインしたいauthorized_keysユーザーの公開鍵の内容をサーバーのファイルにコピーする必要があります。

これを単純化するための手順は次のとおりです。

  • 手順については、サーバーを検索してくださいAuthorizedKeysFile/etc/ssh/sshd_config
  • クライアントから秘密鍵と公開鍵を生成します(すでに実行しています)。
  • authorized_keysログインしたいユーザーのクライアント公開鍵の内容をサーバー上のファイルにコピーします。ユーザーとしてログインするには、username公開鍵をファイルにコピーする必要があります/home/username/.ssh/authorized_keys(ファイルがない場合は作成する必要があります)。

お役に立てば幸いです。

答え4

みんなありがとうございます。これはssh-agentに問題があるようです。再起動後、すべてが正常です。サーバーで許可されているログイン方法が変更された場合、一部の構成はすぐに更新されないようです。

関連情報