SSH 基于主机的身份验证:SSH 客户端如何强制使用给定的密钥位置

SSH 基于主机的身份验证:SSH 客户端如何强制使用给定的密钥位置

Linux 手册页远程控制关于基于主机的身份验证的工作原理,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我如何才能强制在仅使用密钥的基于主机的身份验证中在不同位置查找密钥~/.ssh/known_hosts

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

提前致谢!

答案1

您的known_hosts文件将被 ssh 客户端用来验证您正在连接的远程主机的身份。在基于主机的身份验证中,偏僻的known_hosts服务器需要验证你的客户端主机的身份,这个跟你本地的文件无关。

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

请注意,这不能设置每个连接. 这是用于识别你的主人

答案2

对于基于主机的身份验证,这是不可行的。基于主机的身份验证依赖于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);

相关内容