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);