我了解如何将我的公共 ssh 密钥放入另一台计算机的授权密钥中,ssh-copy-id
前提是我有远程计算机的用户名/密码。
反过来怎么可能呢?获取一些远程计算机的公钥(不需要密码,因为它是公共的)并将其放入我自己的授权密钥中(同样,不需要密码,因为它是我的)。
答案1
ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys
答案2
您在那里混淆了两种不同类型的 SSH 密钥。尽管它们的结构相似,但它们的用途却截然不同。
您的公钥可以称为用户密钥: 虽然是这样民众,即没有必要保密,不是发表通过任何方式自动进行。如果您想将其放在网页上,当然可以这样做。但你必须自己做。
另一方面,每台机器的密钥称为主机密钥。这些会在登录时自动交换,因此可以考虑发表。但主机密钥不会进入authorized_keys
文件:而是进入文件known_hosts
。仅拥有某台计算机的主机密钥不会向任何人提供任何类型的访问权限:它只是让您的 SSH 客户端在您连接到该计算机时确认该计算机与以前相同。
如果系统管理员选择启用HostbasedAuthentication
,/etc/ssh/sshd_config
并且远程主机的主机密钥在系统范围的/etc/ssh/ssh_known_hosts
文件中,则可以将远程主机的名称添加到/etc/hosts.equiv
或/etc/ssh/shosts.equiv
允许每个人在该远程主机上登录本地主机上的相应帐户,而无需输入密码。如果系统管理员也设置IgnoreRhosts
为no
,那么您作为普通用户可以类似地允许特定远程主机上的特定用户在没有密码的情况下访问您在本地主机上的帐户,只需将远程主机的主机密钥放入您的~/.ssh/known_hosts
和username@hostname 到您的~/.rhosts
或~/.shosts
.但默认情况下此身份验证方法是禁用的。
~/.shosts
(您认为为什么像和一样的两个文件~/.rhosts
?嗯,这是因为该.rhosts
文件被旧的非加密rsh
// rlogin
/工具使用,而 SSH 最初被设计为它的直接替代品。您可以使用或,如果您希望允许通过和工具进行访问,或者如果您只想允许 SSH 访问。)rexec
rcp
.rhosts
hosts.equiv
rsh
ssh
.shosts
shosts.equiv
答案3
通过使用 ssh-keyscan 或在连接到未知主机时自动将密钥添加到known_hosts 中。如果您想手动执行此操作,可以使用以下命令:
ssh-keyscan hostname >> ~/.ssh/known_hosts