まず、クライアント側でキーを生成します(Ubuntu 18.04)。
$ ssh-keygen -t rsa -f .ssh/id_rsa
その後、サーバー(Ubuntu Server 18.04)にコピーしました。
$ ssh-copy-id 192.168.1.58
これで、サーバーでキーを表示し、.ssh/authirized_keys
パスワードなしでログインできます。
その後、クライアントは新しいキーを生成し、古いキーを上書きしました。ただし、パスワードなしでサーバーにログインできます。キーが変更されたため、サーバーは私を認証しないと思いました。私は何を見逃していますか?
編集する:
キーも削除しました。
$ rm .ssh/id*
$ ls .ssh/
known_hosts
まだログインできます。
$ ssh 192.168.1.58
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Mar 23 08:51:34 UTC 2020
System load: 0.0 Processes: 106
Usage of /: 42.8% of 12.31GB Users logged in: 1
Memory usage: 6% IP address for enp0s3: 192.168.1.58
Swap usage: 0% IP address for docker0: 172.17.0.1
0 packages can be updated.
0 updates are security updates.
Last login: Mon Mar 23 08:46:19 2020 from 192.168.1.59
$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1[...]nr6eR33QK1BYeNT0BjyhRztd me@ubnutu-vm
$ w
08:53:57 up 2:10, 2 users, load average: 0.06, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
me tty1 - 07:12 21.00s 0.35s 0.32s -bash
me pts/0 192.168.1.59 08:51 1.00s 0.06s 0.00s w
編集2:
ソースssh -v
:
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:Db+pAR0Bc2kmZ9jju9zttSZDwfbEl4TM82AV7KSZ3DM /home/me/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.1.58 ([192.168.1.58]:22).
...
id_rsa
フォルダにファイルがないのに/home/me/.ssh/
。そのため、どのようなキャッシュが関連している可能性があるかを考え、クライアントが再起動した後にパスワードを入力する必要があります。
ssh -v
再起動後の状態です。
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/me/.ssh/id_rsa
debug1: Trying private key: /home/me/.ssh/id_dsa
debug1: Trying private key: /home/me/.ssh/id_ecdsa
debug1: Trying private key: /home/me/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:
したがって、再起動が必要です。
答え1
次のような@プラマルベリーより深く掘り下げて得られた結果は次のとおりです。
これはから来たものですhttps://www.ssh.com/ssh/agent
デフォルトでは、エージェントはユーザーのホームディレクトリの下の.sshディレクトリに保存されているSSHキーを使用します。 ssh-add コマンドは、エージェントに ID を追加するために使用されます。最も単純な形式では、引数なしでifを実行して、デフォルトのファイル~/.ssh/id_rsa、.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_ed25519、および~/.ssh/identityを追加します。それ以外の場合は、パラメータとして追加する秘密鍵ファイル名を指定してください。
次のコマンドは、エージェントが現在アクセスできる秘密鍵を一覧表示します。
ssh-add -l
サーバーに接続すると、ssh-add -l
以下が表示されます。
$ ssh-add -l
2048 SHA256:rzgw39XLAT0NHof4RBXFU/ahKhFWlH8FqMgNxBX2SAE /home/me/.ssh/id_rsa (RSA)
フォルダid_*
のキーが.ssh/
変更または削除されると、ssh-add -l
同じ出力が表示され続け、将来の接続に使用されます(少なくとも私の場合)。
この時点で再起動するか、次のいずれかのコマンドを使用すると、キャッシュされたキーが破棄されます。
$ ssh-add -d /home/me/.ssh/id_rsa
Identity removed: /home/me/.ssh/id_rsa (me@ubnutu-vm)
または
$ ssh-add -D
All identities removed.
これで、新しい接続にパスワードプロンプトが表示されます。
修正する:
これはから来たものですhttps://man.openbsd.org/ssh_config.5#AddKeysToAgent:
エージェントにキーを追加する
ssh-agent(1) 実行にキーを自動的に追加するかどうかを指定します。このオプションをyesに設定し、キーがファイルからロードされると、ssh-add(1)を介して同様に、キーとそのパスワードがデフォルトの有効期間としてエージェントに追加されます。このオプションが質問に設定されている場合、ssh(1)はキーを追加する前にSSH_ASKPASSプログラムを使用して確認を要求します(詳細はssh-add(1)を参照)。このオプションがOKに設定されている場合は、ssh-add(1)に-cオプションが指定されているかのように、キーを使用するたびに確認する必要があります。このオプションを no に設定すると、エージェントにキーは追加されません。パラメーターは次のようにする必要があります。はい、確認する、尋ねるまたはいいえ(基本)。