跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:安全服务 Oracle Solaris 11 Information Library (简体中文) |
缺省情况下,安全 Shell 中未启用基于主机的验证,并且不允许同时使用两种协议。更改这些缺省设置需要管理干预。另外,要使端口转发正常工作,也需要管理干预。
以下任务列表列出了有关配置安全 Shell 的过程。
|
以下过程设置一个公钥系统,其中使用客户机的公钥进行服务器上的验证。用户还必须创建一个公钥/私钥对。
在此过程中,术语客户机和本地主机是指用户键入 ssh 命令的计算机。术语服务器和远程主机是指客户机尝试访问的计算机。
开始之前
您必须是 root 角色。
在客户机配置文件 /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"'
复制该文件后,将显示 "Host key copied"(主机密钥已复制)消息。
/etc/ssh/ssh_known_hosts 文件中的每一行均由空格分隔的字段组成:
hostnames algorithm-name publickey comment
## /etc/ssh/ssh_known_hosts File RemoteHost <copied entry>
示例 17-1 设置基于主机的验证
在以下示例中,每台主机同时配置为服务器和客户机。任一主机上的用户都可以启动与另一台主机的 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
用户在这两台主机上都拥有帐户:
## /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
使用端口转发可以将本地端口转发到远程主机。实际上,分配了一个套接字用于侦听本地端的端口。同样,也可以在远程端指定端口。
开始之前
您必须是 root 角色。
在 /etc/ssh/sshd_config 文件中,将 AllowTcpForwarding 的值更改为 yes。
# Port forwarding AllowTcpForwarding yes
remoteHost# svcadm restart network/ssh:default
有关管理持久性服务的信息,请参见《Oracle Solaris 管理:常见任务》中的第 6 章 "管理服务(概述)"和 svcadm(1M) 手册页。
remoteHost# /usr/bin/pgrep -lf sshd 1296 ssh -L 2001:remoteHost:23 remoteHost
此过程在 /etc/ssh/sshd_config 文件的全局部分之后添加了一个有条件的 Match 块。Match 块后的关键字-值对为指定为匹配的用户、组、主机或地址指定例外。
开始之前
您必须是 root 角色。
将 Match 块置于全局设置之后。
您可能有不允许使用 TCP 转发的用户。下列示例中,所有 public 组的用户和所有以 test 开头的用户名都不能使用 TCP 转发。
## sshd_config file ## Global settings # Example (reflects default settings): # # Host * # ForwardAgent no # ForwardX11 no # PubkeyAuthentication yes # PasswordAuthentication yes # FallBackToRsh no # UseRsh no # BatchMode no # CheckHostIP yes # StrictHostKeyChecking ask # EscapeChar ~ Match Group public AllowTcpForwarding no Match User test* AllowTcpForwarding no
有关 Match 块的语法信息,请参见 sshd_config(4) 手册页。