如果我只有服务器的IP地址且服务器未列在我的~/.ssh/known_hosts
文件中,如何从服务器获取SSH指纹?
我想看一些主机密钥。这是我在Ruby中尝试的内容:
net_ssh_session =
Net::SSH::Transport::Session.new(
target, :port => port, :timeout => timeout, :paranoid => Net::SSH::Verifiers::Null.new)
host_keys = net_ssh_session.host_keys
如果我的~/.ssh/known_hosts
中未列出服务器,则无法获取任何主机密钥。
答案 0 :(得分:0)
有ssh-keyscan
,但请注意,无法保证您从此工具获得的密钥将真正成为服务器的主机密钥(可能会有Man In The Middle攻击正在进行中,您可能会连接到完全不同的服务器。)
您应该使用安全通道,管理员或远程/本地控制台直接从服务器获取主机密钥。
答案 1 :(得分:0)
引用我的文章的重要部分Where do I get SSH host key fingerprint to authorize the server?
您应该从服务器管理员那里获得SSH主机密钥指纹以及您的凭据。了解主机密钥指纹并因此能够验证它是保护SSH连接不可或缺的一部分。它会阻止man-in-the-middle attacks。
在现实世界中,大多数管理员不提供主机密钥指纹。
相反,您可以询问对服务器具有物理访问权限或已知主机密钥的任何其他人。主机密钥只有一个,因此对所有用户都是相同的。另请注意,主机密钥指纹仅从主机密钥的公钥部分生成。因此,这不是秘密,可以通过未加密(但可信)的通信渠道安全地发送。
如果您没有其他人从中获取指纹,您可能需要在不知道指纹的情况下连接到服务器。在首次连接之前,请确保本地计算机的安全性和服务器的一条线路。例如,如果您计划从外部站点(例如从家庭或客户端)连接到服务器,但您具有对服务器站点的物理访问权限,则首次从服务器站点连接(例如您的工作场所)。