以下过程设置一个公钥系统,其中使用客户机的公钥进行服务器上的验证。用户还必须创建一个公钥/私钥对。
在此过程中,“客户机”一词和“本地主机”一词是指用户在其中键入 ssh 命令的系统。术语服务器和远程主机是指客户机尝试访问的系统。
开始之前
您必须承担 root 角色。有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限。
在客户机配置文件 /etc/ssh/ssh_config 中,键入以下项:
HostbasedAuthentication yes
有关该文件的语法,请参见 ssh_config(4) 手册页。
在服务器验证文件 /etc/ssh/sshd_config 中,键入相同的项:
HostbasedAuthentication yes
有关该文件的语法,请参见 sshd_config(4) 手册页。
有关更多信息,请参见 sshd(1M) 手册页的 FILES 部分。
client-host
client-host
在 /etc/ssh/sshd_config 文件中,将 IgnoreRhosts 设置为 no。
## sshd_config IgnoreRhosts no
## sshd_config IgnoreUserKnownHosts no
有关用户说明,请参见如何生成用于安全 Shell 的公钥/私钥对。
主机密钥存储在 /etc/ssh 目录中。这些密钥通常由 sshd 守护进程在首次引导时生成。
在客户机上,在一行中键入以下命令(不带反斜杠)。
# cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \ 'cat >> /etc/ssh/ssh_known_hosts && echo "Host key copied"'
Client and server could not agree on a key exchange algorithm: client "diffie-hellman-group-exchange-sha256,diffie-hellman-group- exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", server "gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==". Make sure host keys are present and accessible by the server process. See sshd_config(4) description of "HostKey" option.
复制该文件后,将显示 "Host key copied"(主机密钥已复制)消息。
/etc/ssh/ssh_known_hosts 文件中的每一行均由空格分隔的字段组成:
hostnames algorithm-name publickey comment
## /etc/ssh/ssh_known_hosts File RemoteHost <copied entry>
在以下示例中,每台主机同时配置为服务器和客户机。任一主机上的用户都可以启动与另一台主机的 ssh 连接。以下配置可使每台主机同时成为服务器和客户机:
在每台主机上,安全 Shell 配置文件都包含以下项:
## /etc/ssh/ssh_config HostBasedAuthentication yes # ## /etc/ssh/sshd_config HostBasedAuthentication yes IgnoreRhosts no
在每台主机上,shosts.equiv 文件都包含对应于另一台主机的项:
## /etc/ssh/shosts.equiv on machine2 machine1
## /etc/ssh/shosts.equiv on machine1 machine2
每台主机的公钥位于另一台主机的 /etc/ssh/ssh_known_hosts 文件中:
## /etc/ssh/ssh_known_hosts on machine2 … machine1
## /etc/ssh/ssh_known_hosts on machine1 … machine2
用户在这两台主机上都拥有帐户。例如,将出现针对用户 John Doe 的以下信息:
## /etc/passwd on machine1 jdoe:x:3111:10:J Doe:/home/jdoe:/bin/sh
## /etc/passwd on machine2 jdoe:x:3111:10:J Doe:/home/jdoe:/bin/sh