SSH 的奇怪行为,未使用正确的密钥注释

SSH 的奇怪行为,未使用正确的密钥注释

我使用的是 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-addAddKeysToAgentssh_config(5)

相关内容