먼저 클라이언트 측에서 키를 생성합니다(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로 설정하면 에이전트에 키가 추가되지 않습니다. 매개변수는 다음과 같아야 합니다.예,확인하다,묻다, 또는아니요(기본).