2016-10-22 105 views
0

如果我只有服务器的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

如果你使用'.ssh/known_hosts',你可能有OpenSSH,如果你有OpenSSH,你应该有'ssh-keyscan'。请参阅联机帮助页。 –

+0

thaanks! @ dave_thompson_085 – hvardhan

回答

0

引用我的文章Where do I get SSH host key fingerprint to authorize the server?

的重要组成部分,您应该得到一个SSH使用您的凭据从服务器管理员一起主机密钥指纹。了解主机密钥指纹,从而能够验证它是保护SSH连接不可或缺的一部分。它可以防止man-in-the-middle attacks

在现实世界中,大多数管理员不提供主机密钥指纹。

相反,您可以询问其他人谁有实际访问服务器或谁已经知道主机密钥。主机密钥只有一个,因此所有用户都是一样的。另请注意,主机密钥指纹仅从主机密钥的公钥部分生成。所以这不是秘密,可以通过未加密的(但是可信的)通信渠道安全地发送。

如果您没有其他人从中获取指纹,则可能需要在不知道指纹的情况下连接到服务器。首次连接之前,请确保本地机器和服务器的安全。例如,如果您计划从外部站点(例如,家庭或客户端)连接到服务器,但您有物理访问服务器站点的权限,则首次从服务器站点连接(例如,您的工作区)。

0

ssh-keyscan,但请注意,不能保证您将从此工具获得的密钥将真正成为服务器的主机密钥(可能会发生Man In The Middle攻击,您可能正在连接到完全不同的服务器)。

您应该直接从服务器使用安全通道,从管理员或使用远程/本地控制台获取主机密钥。