SSH基于主机的authentication:SSH客户端如何强制使用给定的关键位置

在SSH上的Linux手册页说基于主机的身份validation工作,因为SSH server must be able to verify the client's host key (see the description of /etc/ssh/ssh_known_hosts and ~/.ssh/known_hosts, below) for login to be permitted. 我知道~/.ssh/known_hosts包含客户端访问的SSH服务器的主机密钥。

因此,在从~/.ssh/id_rsa~/.ssh/id_dsa中读取身份私钥的基于密钥的身份validation中,如何强制在仅使用密钥~/.ssh/known_hosts基于主机的身份validation中的不同位置查找密钥~/.ssh/known_hosts

在基于密钥的身份validation。 我们可以使用ssh -i /new/path/to/id_rsa <server IP>指向不同的位置,并想知道如何使用基于主机的身份validation。

提前致谢!

您的ssh客户端使用您的known_hosts文件来validation您要连接的远程主机的身份。 在基于主机的身份validation中, 远程服务器需要validation您的客户端主机的身份,这与您的本地known_hosts文件无关。

您的主机密钥来自/etc/ssh/ssh_host_rsa_key/etc/ssh/ssh_host_rsa_key中其他类似命名的文件之一。 您可以使用/etc/ssh/sshd_configHostKey指令设置您的主机HostKey的位置。

请注意,这不能设置每个连接 。 这是标识您的主机的凭证。

基于主机的authentication是不可行的。 基于主机的身份validation依赖于具有主机密钥的硬编码位置的ssh-keysign 。 特别是对于openssh-6.2p1,在ssh-keysign.c中有:

 170 key_fd[i++] = open(_PATH_HOST_DSA_KEY_FILE, O_RDONLY); 171 key_fd[i++] = open(_PATH_HOST_ECDSA_KEY_FILE, O_RDONLY); 172 key_fd[i++] = open(_PATH_HOST_RSA_KEY_FILE, O_RDONLY);