새 키를 생성한 후에도 클라이언트는 비밀번호 없는 SSH를 통해 서버에 로그인할 수 있습니다.

새 키를 생성한 후에도 클라이언트는 비밀번호 없는 SSH를 통해 서버에 로그인할 수 있습니다.

먼저 클라이언트 측에서 키를 생성합니다(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) 참조). 이 옵션이 확인으로 설정된 경우 ssh-add(1)에 -c 옵션이 지정된 것처럼 키를 사용할 때마다 확인해야 합니다. 이 옵션을 no로 설정하면 에이전트에 키가 추가되지 않습니다. 매개변수는 다음과 같아야 합니다.,확인하다,묻다, 또는아니요(기본).

관련 정보