跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:安全服务 Oracle Solaris 11.1 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>
示例 15-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 11.1 中管理服务和故障》中的第 1 章 "管理服务(概述)"和 svcadm(1M) 手册页。
remoteHost# /usr/bin/pgrep -lf sshd 1296 ssh -L 2001:remoteHost:23 remoteHost
此过程在 /etc/ssh/sshd_config 文件的全局部分之后添加了一个有条件的 Match 块。Match 块后的关键字-值对为指定为匹配的用户、组、主机或地址指定例外。
开始之前
您必须是指定有 solaris.admin.edit/etc/ssh/sshd_config 授权的管理员。缺省情况下,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) 手册页。
此过程配置为 sftp 传输专门创建的 sftponly 目录。用户无法看见传输目录外的任何文件或目录。
开始之前
您必须承担 root 角色。有关更多信息,请参见如何使用指定给您的管理权限。
# groupadd sftp # useradd -m -G sftp -s /bin/false sftponly # chown root:root /export/home/sftponly # mkdir /export/home/sftponly/WWW # chown sftponly:staff /export/home/sftponly/WWW
在此配置中,/export/home/sftonly 是只有 root 帐户可以访问的 chroot 目录。用户对 sftponly/WWW 子目录具有写入权限。
在 /etc/ssh/sshd_config 文件中找到 sftp subsystem 项,并按如下方式修改此文件:
# pfedit /etc/ssh/sshd_config ... # sftp subsystem #Subsystem sftp /usr/lib/ssh/sftp-server Subsystem sftp internal-sftp ... ## Match Group for Subsystem ## At end of file, to follow all global options Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
可以使用以下变量指定 chroot 路径:
%h-指定起始目录。
%u-指定经验证用户的用户名。
%%-对 % 符号进行转义。
您的 chroot 环境中的文件可能有所不同。
root@client:~# ssh sftponly@server This service allows sftp connections only. Connection to server closed. No shell access, sftp is enforced. root@client:~# sftp sftponly@server sftp> pwd sftp access granted Remote working directory: /chroot directory looks like root directory sftp> ls WWW local.cshrc local.login local.profile sftp> get local.cshrc Fetching /local.cshrc to local.cshrc /local.cshrc 100% 166 0.2KB/s 00:00user can read contents sftp> put /etc/motd Uploading /etc/motd to /motd Couldn't get handle: Permission denieduser cannot write to / directory sftp> cd WWW sftp> put /etc/motd Uploading /etc/motd to /WWW/motd /etc/motd 100% 118 0.1KB/s 00:00user can write to WWW directory sftp> ls -l -rw-r--r-- 1 101 10 118 Jul 20 09:07 motdsuccessful transfer sftp>