一位同事一直提到 SSH 密钥与 IP 地址相关联,但我不确定这到底意味着什么。因此,我尝试生成一个 SSH 密钥,它在文件末尾有我的主机名。当我们谈论在一组主机之间共享主机密钥时,可能会出现此讨论,而此处的主机密钥没有任何主机 DNS 或 IP 地址。有人可以向我解释主机密钥文件中的 dns/ip 地址如何与密钥本身相关联以及它的缺失意味着什么吗?谢谢。
答案1
密钥末尾的 IP 地址或主机名只是注释。默认情况下,生成密钥的用户名和主机名会写在此处,但出于身份验证目的,这些信息会被忽略。
如果您想要锁定授权的 ssh 密钥,以便只能从特定主机使用,您可以将其放入文件中authorized_keys
:
from="192.168.0.0/24" ssh-rsa BLAHBLAHYOURKEYGOESHERE someone@somewhere
^^^^^^^^^^^^^^^^^ -- comment
答案2
目前尚不清楚其中哪些ssh 相关文件你的意思是,但收集和存储地址的主要文件是known_hosts
(~/.ssh/known_hosts,如果配置了/etc/ssh/known_hosts)文件。/它存储了你已经连接到的主机的密钥,并用于尝试防止中间人攻击。
当您通过 ssh 连接到远程主机时,它会向您发送其公钥。您的 ssh 客户端将检查 known_hosts:
如果您之前已经连接,它会将刚刚发送的密钥与之前存储的密钥进行比较。
- 如果它们相同,则一切顺利,连接继续
- 如果它们不同,客户端将停止连接并发出错误消息。
如果您之前没有连接,您的客户端将显示远程主机的指纹并要求您确认其真实性。
- 如果您验证了密钥,它将存储在known_hosts中以供以后使用(参见上文)
- 如果您不验证密钥,连接将被停止。