我使用的是 Ubuntu 18.04 LTS。
- 每当我
ssh-copy-id
第一次username@host
按预期将 my 放在authorized_keys文件行的末尾。
在远程机器上:
sacredos@sacredos-DT:~$ cat /home/sacredos/.ssh/auth*
ssh-rsa ... sacredos@sacredos-LT
在本地机器上:
sacredos@sacredos-LT:~$ ssh-add -l
4096 SHA256:... sacredos@sacredos-LT (RSA)
- 当我转到
ssh-copy-id
另一台计算机或后续计算机时,它会将 id 文件的路径放在那里。
清除并重新复制密钥后在远程计算机上:
sacredos@sacredos-DT:~$ cat /home/sacredos/.ssh/auth*
ssh-rsa ... /home/sacredos/.ssh/id_rsa
再次复制密钥后在本地计算机上:
sacredos@sacredos-LT:~$ ssh-add -l
4096 SHA256:... /home/username/.ssh/id_rsa (RSA)
- 我安装了一个新的系统来检查这不是我对配置等所做的事情,但它的行为是相同的。无论是处于清除状态的同一台计算机还是新计算机,如果密钥被 ssh-copy-id'ed 两次或更多次,都会发生这种情况。
这里发生了什么?
答案1
从ssh-copy-id(1)
手册页:
没有 , 的默认行为
-i
是检查是否ssh-add -L
提供任何输出,如果是,则使用这些键。请注意,这会导致 对键的评论是给定的文件名ssh-add(1)
当密钥加载到您的ssh-agent(1)
而不是该文件中包含的注释时,这有点遗憾。否则,如果ssh-add(1)
未提供密钥,default_ID_file
则将使用 的内容。
所以你应该总是使用例如。 (如联机帮助页中所述)或者如果您想保留身份文件中的注释,-i ~/.ssh/id_rsa.pub
则无需使用。ssh-agent
ssh-agent
请注意,默认情况下,在 debian 上(也可能在 ubuntu 上),GUI 会话作为(查看)的子进程运行,因此即使您无意,/etc/X11/Xsession.d/90x11-common_ssh-agent
您也会使用它。ssh-agent
此外,如果启用了该选项,ssh-agent
则在运行时ssh
(通过)会自动添加该密钥ssh-copy-id
,而无需运行。 (请参阅手册页)。ssh-add
AddKeysToAgent
ssh_config(5)