赞
踩
Linux中,每个用户的根目录下都有一个.ssh目录,保存了ssh相关的key和一些记录文件。例如:
root@ubuntu:~/.ssh# ls
authorized_keys id_rsa id_rsa.pub known_hosts known_hosts.old
ssh-keygen可以生成ssh协议所需要的公钥和私钥,例如:
ssh-keygen -t rsa
此命令将生成一个私钥文件(默认为id_rsa)和一个公钥文件(默认为id_rsa.pub)。
其中私钥是必须保存在.ssh目录中的,只有该主机的该用户可以使用。而公钥是给需要使用ssh验证的服务器,使用密钥对可以免密码验证,比如ssh,scp,rsync等。
known_hosts
和known_hosts.old
是SSH客户端中的文件,用于存储已知主机的公钥信息。以下是它们的作用和功能:
known_hosts
文件:这个文件包含了您曾经连接过的远程主机的公钥信息。当您首次连接一个远程主机时,SSH客户端会将该主机的公钥保存在known_hosts
文件中。下次再次连接该主机时,客户端会验证主机的公钥是否与之前保存的一致,以防止中间人攻击。如果主机的公钥发生变化,客户端会发出警告,以提醒您进行确认。
known_hosts.old
文件:当SSH客户端检测到known_hosts
文件发生了变化(比如主机公钥发生了更改)时,它会将原始的known_hosts
文件备份为known_hosts.old
。这样,您可以在需要时恢复到旧的已知主机配置。
这些文件通常位于SSH客户端用户的~/.ssh/
目录下,每个用户都有自己的独立副本。
请注意,known_hosts
文件不包含任何敏感信息,它只存储了公钥信息以供身份验证使用。但是,如果您的系统存在安全问题,有人可能会通过欺骗您来窃取您的密钥,因此当发现known_hosts
文件发生变化时,务必审查和验证公钥的有效性。
authorized_keys文件位于SSH服务器上,用于存储允许访问该服务器的客户端的公钥。当您希望使用密钥进行SSH身份验证时,您需要将您的公钥添加到目标服务器的authorized_keys文件中。只有在authorized_keys文件中列出的公钥才能成功进行身份验证并获得访问权限。
authorized_keys文件的作用是配置服务器允许哪些客户端使用密钥进行身份验证。每个客户端的公钥都需要在该文件中有相应的条目才能成功进行身份验证。
虽然known_hosts和authorized_keys两个文件都涉及到存储其他主机的公钥信息,但它们在SSH身份验证过程中的角色和功能是不同的。
known_hosts文件用于SSH客户端验证远程主机的身份,而authorized_keys文件用于SSH服务器验证客户端的身份。它们在SSH连接过程中扮演了不同的角色,并且存储的公钥信息也有不同的来源和目的。
你可能在.ssh目录中同时看到known_hosts和authorized_keys文件,因为这个主机即可以作为ssh客户端去连接其他主机,也可以作为ssh服务器被其他主机连接,因此这两个文件就都存在。
使用rsync同步文件时,我们可以在目标主机用户上保存当前主机用户的公钥,以实现免密同步文件。
ssh-copy-id -i ~/.ssh/id_rsa.pub user@target_host
scp -P 22 ~/.ssh/id_rsa.pub user@target_host:/tmp/id_rsa.pub
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
ssh user@target_host
rsync -avz -e "ssh -p 22" /path/to/source user@target_host:/path/to/destination
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。