Solaris 安全Shell(概述)
第18 章• 使用Solaris 安全Shell(任务) 313
《Configuring the Secure Shell Software》
Solaris 10 发行版中Solaris 安全Shell 的增强功能
从Solaris 9 发行版开始,Solaris 安全Shell 中引入了以下变化:
Solaris 安全Shell 基于OpenSSH 3.5p1。Solaris 实现还包括截至OpenSSH 3.8p1 的各版本的
功能和错误修复。
在/etc/ssh/sshd_config 文件中,X11Forwarding 的缺省值为yes。
以下是已引入的关键字:
GSSAPIAuthentication
GSSAPIKeyExchange
GSSAPIDelegateCredentials
GSSAPIStoreDelegatedCredentials
KbdInteractiveAuthentication
通过GSSAPI 关键字,Solaris 安全Shell 可以使用GSS 凭证进行验证。
KbdInteractiveAuthentication 关键字支持PAM中的任意提示和口令更改。有关这些关
键字及其缺省值的完整列表,请参见第334 页中的“Solaris 安全Shell 中的关键字”。
ARCFOUR 和AES128-CTR 密码现在可用。ARCFOUR 也称为RC4。AES 密码是计数器模
式下的AES。
sshd 守护进程使用/etc/default/login 和login 命令中的变量。/etc/default/login 变
量可以由sshd_config 文件中的值覆盖。有关更多信息,请参见第337 页中的“Solaris
安全Shell 和登录环境变量”和sshd_config(4) 手册页。
Solaris 安全Shell(任务列表)
以下任务列表介绍了用于配置Solaris 安全Shell 和使用Solaris 安全Shell 的任务列表。
任务说明参考
配置Solaris 安全Shell 指导管理员为用户配置Solaris 安全Shell。第315 页中的“配置Solaris 安全Shell
(任务列表)”
使用Solaris 安全Shell 指导用户使用Solaris 安全Shell。第319 页中的“使用Solaris 安全Shell
(任务列表)”
Solaris 10 发行版中Solaris 安全Shell 的增强功能
314 系统管理指南:安全性服务• 2006 年9 月
配置Solaris 安全Shell(任务列表)
以下任务列表介绍了配置Solaris 安全Shell 的过程。
任务说明参考
配置基于主机的验证在客户机和服务器上配置基于主机的验证。第315 页中的“如何为Solaris 安全Shell 设置基
于主机的验证”
将主机配置为使用v1 和
v2
为使用v1 和v2 协议的主机创建公钥文件。第318 页中的“如何启用Solaris 安全Shell v1”
配置端口转发允许用户使用端口转发。第318 页中的“如何在Solaris 安全Shell 中配置
端口转发”
配置Solaris 安全Shell
缺省情况下,Solaris 安全Shell 中未启用基于主机的验证,并且不允许同时使用两种协议。
更改这些缺省设置需要管理干预。另外,要端口转发正常工作,也需要管理干预。
如何为Solaris 安全Shell 设置基于主机的验证
以下过程将设置一个公钥系统,其中客户机的公钥用于服务器上的验证。用户还必须创建
公钥/私钥对。
在此过程中,术语客户机和本地主机是指用户键入ssh 命令的计算机。术语服务器和远程
主机是指客户机要尝试访问的计算机。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
在客户机上,启用基于主机的验证。
在客户机配置文件/etc/ssh/ssh_config 中,键入以下项:
HostbasedAuthentication yes
在服务器上,启用基于主机的验证。
在服务器配置文件/etc/ssh/sshd_config 中,键入相同的项:
HostbasedAuthentication yes
1
2
3
配置Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 315
在服务器上,配置文件以允许将客户机识别为受信任主机。
有关更多信息,请参见sshd(1M) 手册页中的FILES 部分。
将客户机作为一项添加到服务器的/etc/shosts.equiv 文件中。
client-host
或者,可以指示用户在服务器上将一个有关客户机的项添加到其~/.shosts 文件中。
client-host
在服务器上,确保sshd 守护进程可以访问受信任主机的列表。
在/etc/ssh/sshd_config 文件中,将IgnoreRhosts 设置为no。
# sshd_config
IgnoreRhosts no
确保站点上的Solaris 安全Shell 用户在两台主机上都拥有帐户。
执行以下操作之一,以将客户机的公钥放到服务器上。
修改服务器上的sshd_config 文件,然后指示用户将客户机的公共主机密钥添加到其
~/.ssh/known_hosts 文件中。
# sshd_config
IgnoreUserKnownHosts no
有关用户说明,请参见第320 页中的“如何生成用于Solaris 安全Shell 的公钥/私钥对
”。
将客户机的公钥复制到服务器。
主机密钥存储在/etc/ssh 目录中。这些密钥通常由sshd 守护进程在首次引导时生成。
a. 将密钥添加到服务器上的/etc/ssh/ssh_known_hosts 文件中。
在客户机上,在某一行中键入该命令(不带反斜杠)。
# cat /etc/ssh/ssh_host_dsa_key | ssh RemoteHost \
’cat >> /etc/ssh/ssh_known_hosts && echo "Host key copied"’
b. 出现提示时,提供登录口令。
复制文件时,将会显示消息"Host key copied"。
设置基于主机的验证
在以下示例中,每台主机同时配置为服务器和客户机。任一主机上的用户都可以启动与另
一台主机的ssh 连接。以下配置可使每台主机同时成为服务器和客户机:
4
5
6
7
示例18–1
配置Solaris 安全Shell
316 系统管理指南:安全性服务• 2006 年9 月
在每台主机上,Solaris 安全Shell 配置文件都包含以下项:
# /etc/ssh/ssh_config
HostBasedAuthentication yes
#
# /etc/ssh/sshd_config
HostBasedAuthentication yes
IgnoreRhosts no
在每台主机上,shosts.equiv 文件都包含对应于另一台主机的项:
# /etc/hosts.equiv on machine2
machine1
# /etc/hosts.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
配置Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 317
如何启用Solaris 安全Shell v1
此过程在一台主机与运行v1 和v2 的多台主机交互操作时非常有用。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
将主机配置为同时使用两种Solaris 安全Shell 协议。
编辑/etc/ssh/sshd_config 文件。
# Protocol 2
Protocol 2,1
为用于v1 的主机密钥提供一个独立文件。
向/etc/ssh/sshd_config 文件中添加HostKey 项。
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_rsa1_key
生成用于v1 的主机密钥。
# ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa1_key -N ’’
-t rsa1 表示用于v1 的RSA算法。
-f 表示保存主机密钥的文件。
-N ’’ 表示无需口令短语。
重新启动sshd 守护进程。
# svcadm restart network/ssh:default
您也可以重新引导系统。
如何在Solaris 安全Shell 中配置端口转发
使用端口转发可以将本地端口转发到远程主机。实际上,分配了一个套接字用于侦听本地
端的端口。同样,也可以在远程端指定端口。
1
2
3
4
5
配置Solaris 安全Shell
318 系统管理指南:安全性服务• 2006 年9 月
注– Solaris 安全Shell 端口转发必须使用TCP 连接。Solaris 安全Shell 不支持使用UDP连接进
行端口转发。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
将远程Solaris 安全Shell 服务器配置为允许端口转发。
在/etc/ssh/sshd_config 文件中,将AllowTcpForwarding 的值更改为yes。
# Port forwarding
AllowTcpForwarding yes
重新启动Solaris 安全Shell 服务。
remoteHost# svcadm restart network/ssh:default
有关管理持久性服务的信息,请参见《System Administration Guide: Basic Administration》中
的第14 章,“Managing Services (Overview)” 和svcadm(1M) 手册页。
检验是否可以使用端口转发。
remoteHost# /usr/bin/pgrep -lf sshd
1296 ssh -L 2001:remoteHost:23 remoteHost
使用Solaris 安全Shell(任务列表)
以下任务列表介绍了用户使用Solaris 安全Shell 的过程。
任务说明参考
创建公钥/私钥对。针对要求公钥验证的站点启用对Solaris 安全Shell
的访问。
第320 页中的“如何生成用于Solaris 安
全Shell 的公钥/私钥对”
更改口令短语更改用于验证私钥的短语。第323 页中的“如何更改Solaris 安全
Shell 私钥的口令短语”
使用Solaris 安全Shell 登录远程登录时提供加密的Solaris 安全Shell 通信。此
过程与使用rsh 命令类似。
第323 页中的“如何使用Solaris 安全
Shell 登录到远程主机”
1
2
3
4
使用Solaris 安全Shell(任务列表)
第18 章• 使用Solaris 安全Shell(任务) 319
任务说明参考
登录到Solaris 安全Shell 而不
会出现提示要求输入口令。
允许使用可向Solaris 安全Shell 提供口令的代理进
行登录。
第324 页中的“如何减少Solaris 安全
Shell 中的口令提示”
第326 页中的“如何将ssh-agent 命令
设置为自动运行”
在Solaris 安全Shell 中使用端
口转发
指定要在基于TCP 的Solaris 安全Shell 连接中使用
的本地端口或远程端口。
第327 页中的“如何在Solaris 安全
Shell 中使用端口转发”
使用Solaris 安全Shell 复制文
件
在主机之间安全地复制文件。第328 页中的“如何使用Solaris 安全
Shell 复制文件”
安全地从防火墙内的主机连
接到防火墙外的主机。
使用与HTTP 或SOCKS5 兼容的Solaris 安全Shell
命令连接由防火墙隔离的主机。
第329 页中的“如何设置到防火墙外部
主机的缺省连接”
使用Solaris 安全Shell
Solaris 安全Shell 可提供本地shell 和远程shell 之间的安全访问。有关更多信息,请参见
ssh_config(4) 和ssh(1) 手册页。
如何生成用于Solaris 安全Shell 的公钥/私钥对
如果用户的站点要实现基于主机的验证或用户公钥验证,则必须生成公钥/私钥对。有关其
他选项,请参见ssh-keygen(1) 手册页。
通过系统管理员确认是否配置了基于主机的验证。
启动密钥生成程序。
myLocalHost% ssh-keygen -t rsa
Generating public/private rsa key pair.
...
其中,-t 是算法类型,可以是rsa、dsa 或rsa1 之一。
指定将保存密钥的文件的路径。
缺省情况下,文件名id_rsa(表示RSAv2 密钥)显示在括号中。可通过按回车键选择此文
件。或者,可以键入替换的文件名。
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa): <按回车键>
通过将字符串.pub 附加到私钥文件的名称后,可以自动创建公钥的文件名。
开始之前
1
2
使用Solaris 安全Shell
320 系统管理指南:安全性服务• 2006 年9 月
键入使用密钥的口令短语。
此口令短语用于加密私钥。强烈建议不要使用空项。请注意,键入口令短语时,它们不会
显示。
Enter passphrase (empty for no passphrase): <键入口令短语>
重新键入口令短语以进行确认。
Enter same passphrase again: <键入口令短语>
Your identification has been saved in /home/jdoe/.ssh/id_rsa.
Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
The key fingerprint is:
0e:fb:3d:57:71:73:bf:58:b8:eb:f3:a3:aa:df:e0:d1
检查结果。
检查密钥文件的路径是否正确。
% ls ~/.ssh
id_rsa
id_rsa.pub
此时,已创建公钥/私钥对。
选择适当的选项:
如果管理员已配置了基于主机的验证,则可能需要将本地主机的公钥复制到远程主机。
现在即可登录到远程主机。有关详细信息,请参见第323 页中的“如何使用Solaris 安全
Shell 登录到远程主机”。
a. 在一行中键入命令(不带反斜杠)。
% cat /etc/ssh/ssh_host_dsa_key | ssh RemoteHost \
’cat >> ~./ssh/known_hosts && echo "Host key copied"’
b. 出现提示时,提供登录口令。
Enter password: <键入口令>
Host key copied
%
3
4
5
6
使用Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 321
如果站点使用公钥来进行用户验证,请在远程主机上装载authorized_keys 文件。
a. 将公钥复制到远程主机。
在一行中键入命令(不带反斜杠)。
myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \
’cat >> .ssh/authorized_keys && echo "Key copied"’
b. 出现提示时,提供登录口令。
复制文件时,将会显示消息"Key copied"。
Enter password: 键入登录口令
Key copied
myLocalHost%
(可选的)减少口令短语的提示。
有关过程,请参见第324 页中的“如何减少Solaris 安全Shell 中的口令提示”。有关更多信
息,请参见ssh-agent(1) 和ssh-add(1) 手册页。
为用户建立v1 RSA密钥
在以下示例中,用户可以访问运行Solaris 安全Shell v1 协议的主机。要通过v1 主机进行验
证,用户应创建v1 密钥,然后将公钥部分复制到远程主机。
myLocalHost% ssh-keygen -t rsa1 -f /home/jdoe/.ssh/identity
Generating public/private rsa key pair.
...
Enter passphrase (empty for no passphrase): <键入口令短语>
Enter same passphrase again: <键入口令短语>
Your identification has been saved in /home/jdoe/.ssh/identity.
Your public key has been saved in /home/jdoe/.ssh/identity.pub.
The key fingerprint is:
...
myLocalHost% ls ~/.ssh
id_rsa
7
示例18–2
使用Solaris 安全Shell
322 系统管理指南:安全性服务• 2006 年9 月
id_rsa.pub
identity
identity.pub
myLocalHost% cat $HOME/.ssh/identity.pub | ssh myRemoteHost \
’cat >> .ssh/authorized_keys && echo "Key copied"’
如何更改Solaris 安全Shell 私钥的口令短语
以下过程不会更改私钥。此过程将更改私钥的验证机制,即口令短语。有关更多信息,请
参见ssh-keygen(1) 手册页。
更改口令短语。
键入带有-p 选项的ssh-keygen 命令,并回答提示问题。
myLocalHost% ssh-keygen -p
Enter file which contains the private key (/home/jdoe/.ssh/id_rsa): <按回车键>
Enter passphrase (empty for no passphrase): <键入口令短语>
Enter same passphrase again: <键入口令短语>
其中,-p 用于请求更改私钥文件的口令短语。
如何使用Solaris 安全Shell 登录到远程主机
启动Solaris 安全Shell 会话。
键入ssh 命令,并指定远程主机的名称。
myLocalHost% ssh myRemoteHost
此时会出现提示,询问远程主机的真实性:
The authenticity of host ’myRemoteHost’ can’t be established.
RSA key fingerprint in md5 is: 04:9f:bd:fc:3d:3e:d2:e7:49:fd:6e:18:4f:9c:26
Are you sure you want to continue connecting(yes/no)?
初始连接到远程主机时,出现此提示为正常情况。
◗
1
使用Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 323
如果出现提示,请检验远程主机密钥的真实性。
如果无法确认远程主机的真实性,请键入no 并与系统管理员联系。
Are you sure you want to continue connecting(yes/no)? no
管理员负责更新全局/etc/ssh/ssh_known_hosts 文件。更新的ssh_known_hosts 文件可
禁止出现此提示。
如果确认了远程主机的真实性,请回答提示问题,并继续下一步。
Are you sure you want to continue connecting(yes/no)? yes
向Solaris 安全Shell 验证自身的身份。
a. 出现提示时,键入口令短语。
Enter passphrase for key ’/home/jdoe/.ssh/id_rsa’: <键入口令短语>
b. 出现提示时,键入帐户口令。
password: <键入口令>
Last login: Fri Jul 20 14:24:10 2001 from myLocalHost
myRemoteHost%
执行远程主机上的事务。
所发送的命令将会加密。所接收的任何响应都会加密。
关闭Solaris 安全Shell 连接。
完成后,键入exit 或者使用常规方法退出shell。
myRemoteHost% exit
myRemoteHost% logout
Connection to myRemoteHost closed
myLocalHost%
如何减少Solaris 安全Shell 中的口令提示
如果不想键入口令短语和口令来使用Solaris 安全Shell,则可以使用代理守护进程。请在会
话开始时启动守护进程。然后,使用ssh-add 命令将私钥存储到代理守护进程中。如果您在
不同的主机上拥有不同的帐户,请添加需要用于会话的密钥。
可以根据需要手动启动代理守护进程,如以下过程中所述。或者,可以将代理守护进程设
置为在每个会话开始时自动运行,如第326 页中的“如何将ssh-agent 命令设置为自动运行
”中所述。
2
3
4
5
使用Solaris 安全Shell
324 系统管理指南:安全性服务• 2006 年9 月
启动代理守护进程。
myLocalHost% ssh-agent
检验是否已启动代理守护进程。
myLocalHost% eval ‘ssh-agent‘
Agent pid 9892
将私钥添加到代理守护进程。
键入ssh-add 命令。
myLocalHost% ssh-add
Enter passphrase for /home/jdoe/.ssh/id_rsa: <键入口令短语>
Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa)
myLocalHost%
启动Solaris 安全Shell 会话。
myLocalHost% ssh myRemoteHost
此时不会提示您输入口令短语。
使用ssh-add 选项
在本示例中,jdoe 将向代理守护进程添加两个密钥。-l 选项用于列出守护进程中存储的所
有密钥。在会话结束时,-D 选项用于删除代理守护进程中的所有密钥。
myLocalHost% ssh-agent
myLocalHost% ssh-add
Enter passphrase for /home/jdoe/.ssh/id_rsa: <键入口令短语>
Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa)
myLocalHost% ssh-add /home/jdoe/.ssh/id_dsa
Enter passphrase for /home/jdoe/.ssh/id_dsa: <键入口令短语>
Identity added:
/home/jdoe/.ssh/id_dsa(/home/jdoe/.ssh/id_dsa)
1
2
3
4
示例18–3
使用Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 325
myLocalHost% ssh-add -l
md5 1024 0e:fb:3d:53:71:77:bf:57:b8:eb:f7:a7:aa:df:e0:d1
/home/jdoe/.ssh/id_rsa(RSA)
md5 1024 c1:d3:21:5e:40:60:c5:73:d8:87:09:3a:fa:5f:32:53
/home/jdoe/.ssh/id_dsa(DSA)
用户管理Solaris 安全Shell 事务
myLocalHost% ssh-add -D
Identity removed:
/home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa.pub)
/home/jdoe/.ssh/id_dsa(DSA)
如何将ssh-agent 命令设置为自动运行
只要通过自动启动代理守护进程ssh-agent 来使用Solaris 安全Shell,即可避免提供口令短
语和口令。可以通过.dtprofile 脚本启动代理守护进程。要将口令短语和口令添加到代理
守护进程,请参见示例18–3。
在用户启动脚本中自动启动代理守护进程。
将以下行添加到$HOME/.dtprofile 脚本的末尾:
if [ "$SSH_AUTH_SOCK" = "" -a -x /usr/bin/ssh-agent ]; then
eval ‘/usr/bin/ssh-agent‘
fi
退出CDE 会话时,终止代理守护进程。
将以下行添加到$HOME/.dt/sessions/sessionexit 脚本中:
if [ "$SSH_AGENT_PID" != "" -a -x /usr/bin/ssh-agent ]; then
/usr/bin/ssh-agent -k
fi
此项可确保终止CDE 会话后,任何用户都无法使用Solaris 安全Shell 代理。
1
2
使用Solaris 安全Shell
326 系统管理指南:安全性服务• 2006 年9 月
如何在Solaris 安全Shell 中使用端口转发
可以指定将本地端口转发到远程主机。实际上,分配了一个套接字用于侦听本地端的端
口。从此端口到远程主机的连接基于安全通道。例如,可以指定端口143 以使用IMAP4 远
程获取电子邮件。同样,也可以在远程端指定端口。
使用端口转发之前,管理员必须先在远程Solaris 安全Shell 服务器上启用端口转发。有关详
细信息,请参见第318 页中的“如何在Solaris 安全Shell 中配置端口转发”。
要使用安全的端口转发,请选择以下选项之一:
要将本地端口设置为接收来自远程端口的安全通信,请同时指定这两个端口。
指定用于侦听远程通信的本地端口。另外,指定用于转发通信的远程主机和远程端口。
myLocalHost% ssh -L localPort:remoteHost:remotePort
要将远程端口设置为接收来自本地端口的安全通信,请同时指定这两个端口。
指定用于侦听远程通信的远程端口。另外,指定用于转发通信的本地主机和本地端口。
myLocalHost% ssh -R remotePort:localhost:localPort
使用本地端口转发接收邮件
以下示例说明如何使用本地端口转发来安全地接收来自远程服务器的邮件。
myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost
此命令可将连接从myLocalHost 上的端口9143 转发到端口143。端口143 是myRemoteHost 上
的IMAP v2 服务器端口。用户启动邮件应用程序时,需要指定本地端口号,如以下对话框
中所示。
开始之前
◗
示例18–4
使用Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 327
请勿将对话框中的localhost 与myLocalHost 混淆。myLocalHost 是假设的主机名,而
localhost 则是用于标识本地系统的关键字。
使用远程端口转发在防火墙外部进行通信
本示例说明企业环境中的用户如何将连接从外部网络中的主机转发到公司防火墙内的主
机。
myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost
此命令可将连接从myOutsideHost 上的端口9022 转发到本地主机上的端口22(sshd 服务
器)。
myOutsideHost% ssh -p 9022 localhost
myLocalHost%
如何使用Solaris 安全Shell 复制文件
以下过程说明如何使用scp 命令在主机之间复制加密的文件。您可以在一台本地主机和一
台远程主机之间,或者两台远程主机之间复制加密的文件。该命令的运行与rcp 命令类
似,不同的是scp 命令会提示进行验证。有关更多信息,请参见scp(1) 手册页。
也可以使用sftp(一种形式更安全的ftp 命令)。有关更多信息,请参见sftp(1) 手册页。
示例18–5
使用Solaris 安全Shell
328 系统管理指南:安全性服务• 2006 年9 月
启动安全的复制程序。
指定源文件、远程目标上的用户名和目标目录。
myLocalHost% scp myfile.1 :~
出现提示时,提供口令短语。
Enter passphrase for key ’/home/jdoe/.ssh/id_rsa’: <键入口令短语>
myfile.1 25% |******* | 640 KB 0:20 ETA
myfile.1
键入口令短语后,将会显示进度计量器。请参见以上输出中的第二行。进度计量器显示以
下内容:
文件名
已传输的文件百分比
表示已传输的文件百分比的一系列星号
已传输的数据量
完整文件的估计到达时间(estimated time of arrival, ETA),即剩余时间。
如何设置到防火墙外部主机的缺省连接
可以使用Solaris 安全Shell 建立从防火墙内的主机到防火墙外的主机的连接。通过在配置文
件中指定ssh 的代理命令或者在命令行中将该代理命令指定为选项,可以完成此任务。有
关的命令行选项,请参见示例18–6。
通常,可以通过配置文件自定义ssh 交互。
可以在~/.ssh/config 中自定义独立的个人文件。
或者,可以使用管理配置文件/etc/ssh/ssh_config 中的设置。
可以使用两种类型的代理命令自定义这些文件。一个是用于HTTP 连接的代理命令。另一
个是用于SOCKS5 连接的代理命令。有关更多信息,请参见ssh_config(4) 手册页。
在配置文件中指定代理命令和主机。
使用以下语法添加所需数量的行:
[Host outside-host]
ProxyCommand proxy-command [-h proxy-server] \
[-p proxy-port] outside-host|%h outside-port|%p
Host outside-host
在命令行中指定远程主机名时,将代理命令规范限制为实例。如果对outside-host 使用通
配符,则可将代理命令规范应用于一组主机。
1
2
1
使用Solaris 安全Shell
第18 章• 使用Solaris 安全Shell(任务) 329
proxy-command
指定代理命令。该命令可以是以下之一:
/usr/lib/ssh/ssh-http-proxy-connect,用于HTTP 连接
/usr/lib/ssh/ssh-socks5-proxy-connect,用于SOCKS5 连接
-h proxy-server 和-p proxy-port
这些选项分别指定代理服务器和代理端口。如果存在,则代理将覆盖指定代理服务器和
代理端口的任何环境变量,如HTTPPROXY、HTTPPROXYPORT、SOCKS5_PORT、SOCKS5_SERVER
和http_proxy。http_proxy 变量指定URL。如果不使用这些选项,则必须设置相关的环
境变量。有关更多信息,请参见ssh-socks5-proxy-connect(1) 和
ssh-http-proxy-connect(1) 手册页。
outside-host
指定要连接到的特定主机。请在命令行中使用%h 替换参数来指定主机。
outside-port
指定要连接到的特定端口。请在命令行中使用%p 替换参数来指定端口。通过指定%h 和
%p 而不使用Host outside-host 选项,只要调用ssh 命令即可将应用代理命令到主机参数。
运行Solaris 安全Shell,从而指定外部主机。
例如,键入以下命令:
myLocalHost% ssh myOutsideHost
此命令可在个人配置文件中查找myOutsideHost 的代理命令规范。如果找不到规范,则该命
令将在系统范围的配置文件/etc/ssh/ssh_config 中查找。该代理命令将替换ssh 命令。
通过命令行连接到防火墙外部的主机
第329 页中的“如何设置到防火墙外部主机的缺省连接”说明如何在配置文件中指定代理
命令。在本示例中,在ssh 命令行中指定代理命令。
% ssh -o’Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \
-h myProxyServer -p 8080 myOutsideHost 22’ myOutsideHost
ssh 命令的-o 选项提供了指定代理命令的命令行方法。此示例命令可执行以下操作:
将ssh 替换为HTTP 代理命令
使用端口8080 并将myProxyServer 用作代理服务器
连接到myOutsideHost 上的端口22
2
示例18–6
使用Solaris 安全Shell
330 系统管理指南:安全性服务• 2006 年9 月
Solaris 安全Shell(参考)
本章介绍Solaris 安全Shell 中的配置选项。以下是本章中参考信息的列表:
第331 页中的“典型的Solaris 安全Shell 会话”
第333 页中的“Solaris 安全Shell 中的客户机和服务器配置”
第334 页中的“Solaris 安全Shell 中的关键字”
第338 页中的“维护Solaris 安全Shell 中的已知主机”
第339 页中的“Solaris 安全Shell 软件包和初始化”
第339 页中的“Solaris 安全Shell 文件”
第341 页中的“Solaris 安全Shell 命令”
有关配置Solaris 安全Shell 的过程,请参见第18 章。
典型的Solaris 安全Shell 会话
Solaris 安全Shell 守护进程(sshd) 通常在引导时(启动网络服务时)启动。该守护进程侦听
来自客户机的连接。Solaris 安全Shell 会话在用户运行ssh、scp 或sftp 命令时开始。系统将
为每个传入连接派生一个新的sshd 守护进程。派生的守护进程处理密钥交换、加密、验
证、命令执行以及与客户机的数据交换。这些会话的特征由客户端配置文件和服务器端配
置文件确定。命令行参数可以覆盖配置文件中的设置。
客户机和服务器必须相互进行认证。验证成功后,用户可以远程执行命令和在主机之间复
制数据。
Solaris 安全Shell 中会话的特征
sshd 守护进程的服务器端行为由/etc/ssh/sshd_config 文件中的关键字设置控制。例如,
sshd_config 文件控制访问服务器时可采用哪些类型的验证。启动sshd 守护进程时,命令行
选项也可控制服务器端行为。
客户端的行为由Solaris 安全Shell 关键字控制,其优先级顺序如下:
命令行选项
19 第1 9 章
331
用户的配置文件~/.ssh/config
系统范围的配置文件/etc/ssh/ssh_config
例如,用户可以通过在命令行中指定-c 3des 来覆盖在系统范围内配置的Cipher 的设置值
blowfish。
Solaris 安全Shell 中的验证和密钥交换
Solaris 安全Shell 协议(v1 和v2)均支持客户机用户/主机验证和服务器主机验证。这两种协
议都涉及会话加密密钥(用于保护Solaris 安全Shell 会话)的交换。每种协议提供了用于验
证和密钥交换的各种方法。一些方法是可选的。Solaris 安全Shell 支持许多客户机验证机
制,如表18–1 中所示。通常使用已知的主机公钥对服务器进行验证。
对于v1 协议,Solaris 安全Shell 支持使用口令进行用户验证。该协议也支持用户公钥,以及
使用受信任的主机公钥进行验证。服务器验证使用主机公钥完成。对于v1 协议,所有公钥
都是RSA密钥。会话密钥交换涉及对定期重新生成的暂时服务器密钥的使用。
对于v2 协议,Solaris 安全Shell 支持用户验证和一般交互验证,这通常涉及到口令。该协议
也支持使用用户公钥和受信任的主机公钥进行验证。这些密钥可以是RSA或DSA。会话密
钥交换由在服务器验证步骤中签名的Diffie-Hellman 暂时密钥交换组成。此外,Solaris 安全
Shell 可以使用GSS 凭证进行验证。
获取Solaris 安全Shell 中的GSS 凭证
要在Solaris 安全Shell 中使用GSS-API 进行验证,服务器必须具有GSS-API 接收器凭证,客
户机必须具有GSS-API 启动器凭证。支持mech_dh 和mech_krb5。
对于mech_dh,如果root 已运行keylogin 命令,则服务器具有GSS-API 接收器凭证。
对于mech_krb5,如果/etc/krb5/krb5.keytab 中包含与该服务器对应的主机主体的有效
项,则服务器具有GSS-API 接收器凭证。
如果执行了以下某项操作,则客户机具有mech_dh 的启动器凭证:
已运行keylogin 命令。
pam.conf 文件中使用了pam_dhkeys 模块。
如果执行了以下某项操作,则客户机具有mech_krb5 的启动器凭证:
已运行kinit 命令。
pam.conf 文件中使用了pam_krb5 模块。
有关mech_dh 在安全RPC 中的使用,请参见第15 章。有关如何使用mech_krb5,请参见
第20 章。有关机制的更多信息,请参见mech(4) 和mech_spnego(5) 手册页。
典型的Solaris 安全Shell 会话
332 系统管理指南:安全性服务• 2006 年9 月
Solaris 安全Shell 中的命令执行和数据转发
完成验证后,用户通常可通过请求shell 或执行命令来使用Solaris 安全Shell。通过ssh 命令
选项可发出请求。请求可能包括分配伪tty、转发X11 连接或TCP/IP 连接,或通过安全连接
启用ssh-agent 验证程序。用户会话的基本组成部分如下:
1. 用户请求shell 或请求执行命令,以开始会话模式。
在此模式下,数据通过客户端的终端进行发送或接收。在服务器端,数据通过shell 或命
令进行发送。
2. 数据传送完成后,用户程序将终止。
3. 除已存在的连接外,所有X11 转发和TCP/IP 转发均停止。现有X11 连接和TCP/IP 连接
仍然处于打开状态。
4. 服务器向客户机发送退出状态消息。关闭所有连接后(如仍处于打开状态的转发端
口),客户机将关闭到服务器的连接。然后,客户机退出。
Solaris 安全Shell 中的客户机和服务器配置
Solaris 安全Shell 会话的特征由配置文件控制。命令行中的选项可在一定程度上覆盖配置文
件。
Solaris 安全Shell 中的客户机配置
大多数情况下,Solaris 安全Shell 会话的客户端特征由系统范围的配置文件
/etc/ssh/ssh_config 管理。用户配置文件~/.ssh/config 可覆盖ssh_config 文件中的设
置。此外,用户可在命令行中覆盖这两个配置文件。
服务器的/etc/ssh/sshd_config 文件中的设置确定服务器允许哪些客户机请求。有关服务
器配置设置的列表,请参见第334 页中的“Solaris 安全Shell 中的关键字”。有关详细信
息,请参见sshd_config(4) 手册页。
第334 页中的“Solaris 安全Shell 中的关键字”中列出了客户机配置文件中的关键字;如果
关键字具有缺省值,则会给出该值。ssh(1)、scp(1)、sftp(1) 和ssh_config(4) 手册页中详
细介绍了这些关键字。有关以字母顺序排列的关键字列表及其等效命令行覆盖,请参见表
19–8。
Solaris 安全Shell 中的服务器配置
Solaris 安全Shell 会话的服务器端特征由/etc/ssh/sshd_config 文件管理。第334 页中的
“Solaris 安全Shell 中的关键字”中列出了服务器配置文件中的关键字;如果关键字具有缺
省值,则会给出该值。有关这些关键字的完整说明,请参见sshd_config(4) 手册页。
阅读(446) | 评论(0) | 转发(0) |