使用 Solaris 安全 Shell,用户可以通过不安全的网络安全地访问远程主机。该 shell 提供了用于远程登录和远程文件传输的命令。本章包含以下主题:
有关参考信息,请参见第 19 章,Solaris 安全 Shell(参考)。
在 Solaris 安全 Shell 中,提供了使用口令、公钥,或同时使用二者的验证。所有网络通信都将被加密。因此,Solaris 安全 Shell 可防止可能的入侵者读取被拦截的通信。Solaris 安全 Shell 还可防止入侵者欺骗系统。
Solaris 安全 Shell 还可用作即时 virtual private network, VPN(虚拟专用网络)。VPN 可以转发 X 窗口系统通信,或通过加密的网络链路连接本地计算机和远程计算机之间的各个端口号。
使用 Solaris 安全 Shell,可以执行以下操作:
通过不安全的网络安全地登录到其他主机。
在两台主机之间安全地复制文件。
在远程主机上安全地运行命令。
Solaris 安全 Shell 支持两种版本的安全 Shell 协议。版本 1 是协议的原始版本。版本 2 更安全,该版本修正了版本 1 的一些基本安全设计缺陷。版本 1 仅提供用于协助用户迁移到版本 2。强烈建议用户不要使用版本 1。
在下文中,v1 用于表示版本 1,v2 用于表示版本 2。
Solaris 安全 Shell 提供公钥和口令方法来验证与远程主机的连接。公钥验证是一种比口令验证更强大的验证机制,因为私钥从不通过网络传送。
请按以下顺序尝试这些验证方法。如果配置不满足验证方法的要求,请尝试下一种方法。
GSS-API-使用 mech_krb5 (Kerberos V) 和 mech_dh (AUTH_DH) 等 GSS-API 机制的凭证来验证客户机和服务器。有关 GSS-API 的更多信息,请参见《Solaris 开发者安全性指南》中的“GSS-API 介绍”。
基于主机的验证-使用主机密钥和 rhosts 文件。使用客户机的 RSA 和 DSA 公共/专用主机密钥验证客户机。使用 rhosts 文件向用户授权使用客户机。
公钥验证-验证用户的 RSA 和 DSA 公钥/私钥。
口令验证-使用 PAM 验证用户。 v2 中的键盘验证方法允许 PAM 的任意提示。有关更多信息,请参见 sshd(1M) 手册页中的 SECURITY 部分。
下表显示了验证正在尝试登录到远程主机的用户的要求。该用户位于本地主机(客户机)上。远程主机(服务器)正在运行 sshd 守护进程。下表显示了 Solaris 安全 Shell 验证方法、兼容的协议版本和主机要求。
表 18–1 Solaris 安全 Shell 的验证方法
验证方法(协议版本) |
本地主机(客户机)要求 |
远程主机(服务器)要求 |
---|---|---|
GSS 机制的启动器凭证。 |
GSS 机制的接收器凭证。有关更多信息,请参见获取 Solaris 安全 Shell 中的 GSS 凭证。 |
|
用户帐户 /etc/ssh/ssh_host_rsa_key 或 /etc/ssh/ssh_host_dsa_key 中的本地主机私钥 /etc/ssh/ssh_config 中的 HostbasedAuthentication yes |
用户帐户 /etc/ssh/known_hosts 或 ~/.ssh/known_hosts 中的本地主机公钥 /etc/ssh/sshd_config 中的 HostbasedAuthentication yes /etc/ssh/sshd_config 中的 IgnoreRhosts no /etc/shosts.equiv、/etc/hosts.equiv、~/.rhosts 或 ~/.shosts 中的本地主机项 |
|
用户帐户 ~/.ssh/id_rsa 或 ~/.ssh/id_dsa 中的私钥 ~/.ssh/id_rsa.pub 或 ~/.ssh/id_dsa.pub 中的用户公钥 |
用户帐户 ~/.ssh/authorized_keys 中的用户公钥 |
|
RSA 公钥 (v1) |
用户帐户 ~/.ssh/identity 中的私钥 ~/.ssh/identity.pub 中的用户公钥 |
用户帐户 ~/.ssh/authorized_keys 中的用户公钥 |
用户帐户 |
用户帐户 支持 PAM,包括触发口令生命期后的任意提示和口令更改。 |
|
用户帐户 |
用户帐户 支持 PAM。 |
|
仅 .rhosts (v1) |
用户帐户 |
用户帐户 /etc/ssh/sshd_config 中的 IgnoreRhosts no /etc/shosts.equiv、/etc/hosts.equiv、~/.shosts 或 ~/.rhosts 中的本地主机项 |
仅在服务器上使用 RSA (v1) 的 .rhosts |
用户帐户 /etc/ssh/ssh_host_rsa1_key 中的本地主机公钥 |
用户帐户 /etc/ssh/ssh_known_hosts 或 ~/.ssh/known_hosts 中的本地主机公钥 /etc/ssh/sshd_config 中的 IgnoreRhosts no /etc/shosts.equiv、/etc/hosts.equiv、~/.shosts 或 ~/.rhosts 中的本地主机项 |
有关 Solaris 系统中的安全 Shell 的全面介绍,请参见由 Jason Reid 编著的《Secure Shell in the Enterprise》,2003 年 6 月出版,ISBN 为 0-13-142900-0。该书是 Sun Microsystems Press 出版的 Sun BluePrints 丛书的一部分。
有关联机信息,请导航至 Sun 的 BigAdmin System Administration Portal 网站 http://www.sun.com/bigadmin。单击 docs.sun.com,然后在 Other documentation sites 下单击 Sun BluePrints。然后依次单击 Archives by Subject 和 Security。该文档集包括以下文章:
《Role Based Access Control and Secure Shell – A Closer Look At Two Solaris Operating Environment Security Features》
《Integrating the Secure Shell Software》
《Configuring the Secure Shell Software》
从 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 中的任意提示和口令更改。有关这些关键字及其缺省值的完整列表,请参见Solaris 安全 Shell 中的关键字。
ARCFOUR 和 AES128-CTR 密码现在可用。ARCFOUR 也称为 RC4。AES 密码是计数器模式下的 AES。
sshd 守护进程使用 /etc/default/login 和 login 命令中的变量。/etc/default/login 变量可以由 sshd_config 文件中的值覆盖。有关更多信息,请参见Solaris 安全 Shell 和登录环境变量和 sshd_config(4) 手册页。
以下任务列表介绍了用于配置 Solaris 安全 Shell 和使用 Solaris 安全 Shell 的任务列表。
任务 |
说明 |
参考 |
---|---|---|
配置 Solaris 安全 Shell |
指导管理员为用户配置 Solaris 安全 Shell。 | |
使用 Solaris 安全 Shell |
指导用户使用 Solaris 安全 Shell。 |
以下任务列表介绍了配置 Solaris 安全 Shell 的过程。
任务 |
说明 |
参考 |
---|---|---|
配置基于主机的验证 |
在客户机和服务器上配置基于主机的验证。 | |
将主机配置为使用 v1 和 v2 |
为使用 v1 和 v2 协议的主机创建公钥文件。 | |
配置端口转发 |
允许用户使用端口转发。 |
缺省情况下,Solaris 安全 Shell 中未启用基于主机的验证,并且不允许同时使用两种协议。更改这些缺省设置需要管理干预。另外,要端口转发正常工作,也需要管理干预。
以下过程将设置一个公钥系统,其中客户机的公钥用于服务器上的验证。用户还必须创建公钥/私钥对。
在此过程中,术语客户机和本地主机是指用户键入 ssh 命令的计算机。术语服务器和远程主机是指客户机要尝试访问的计算机。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
在客户机上,启用基于主机的验证。
在客户机配置文件 /etc/ssh/ssh_config 中,键入以下项:
HostbasedAuthentication yes |
在服务器上,启用基于主机的验证。
在服务器配置文件 /etc/ssh/sshd_config 中,键入相同的项:
HostbasedAuthentication yes |
在服务器上,配置文件以允许将客户机识别为受信任主机。
有关更多信息,请参见 sshd(1M) 手册页中的 FILES 部分。
在服务器上,确保 sshd 守护进程可以访问受信任主机的列表。
在 /etc/ssh/sshd_config 文件中,将 IgnoreRhosts 设置为 no。
# sshd_config IgnoreRhosts no |
确保站点上的 Solaris 安全 Shell 用户在两台主机上都拥有帐户。
执行以下操作之一,以将客户机的公钥放到服务器上。
修改服务器上的 sshd_config 文件,然后指示用户将客户机的公共主机密钥添加到其 ~/.ssh/known_hosts 文件中。
# sshd_config IgnoreUserKnownHosts no |
有关用户说明,请参见如何生成用于 Solaris 安全 Shell 的公钥/私钥对。
将客户机的公钥复制到服务器。
主机密钥存储在 /etc/ssh 目录中。这些密钥通常由 sshd 守护进程在首次引导时生成。
在以下示例中,每台主机同时配置为服务器和客户机。任一主机上的用户都可以启动与另一台主机的 ssh 连接。以下配置可使每台主机同时成为服务器和客户机:
在每台主机上,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 |
此过程在一台主机与运行 v1 和 v2 的多台主机交互操作时非常有用。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将主机配置为同时使用两种 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 '' |
表示用于 v1 的 RSA 算法。
表示保存主机密钥的文件。
表示无需口令短语。
重新启动 sshd 守护进程。
# svcadm restart network/ssh:default |
您也可以重新引导系统。
使用端口转发可以将本地端口转发到远程主机。实际上,分配了一个套接字用于侦听本地端的端口。同样,也可以在远程端指定端口。
Solaris 安全 Shell 端口转发必须使用 TCP 连接。Solaris 安全 Shell 不支持使用 UDP 连接进行端口转发。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将远程 Solaris 安全 Shell 服务器配置为允许端口转发。
在 /etc/ssh/sshd_config 文件中,将 AllowTcpForwarding 的值更改为 yes。
# Port forwarding AllowTcpForwarding yes |
remoteHost# svcadm restart network/ssh:default |
有关管理持久性服务的信息,请参见《系统管理指南:基本管理》中的第 14 章 “管理服务(概述)” 和 svcadm(1M) 手册页。
检验是否可以使用端口转发。
remoteHost# /usr/bin/pgrep -lf sshd 1296 ssh -L 2001:remoteHost:23 remoteHost |
以下任务列表介绍了用户使用 Solaris 安全 Shell 的过程。
任务 |
说明 |
参考 |
---|---|---|
创建公钥/私钥对。 |
针对要求公钥验证的站点启用对 Solaris 安全 Shell 的访问。 | |
更改口令短语 |
更改用于验证私钥的短语。 | |
使用 Solaris 安全 Shell 登录 |
远程登录时提供加密的 Solaris 安全 Shell 通信。此过程与使用 rsh 命令类似。 | |
登录到 Solaris 安全 Shell 而不会出现提示要求输入口令。 |
允许使用可向 Solaris 安全 Shell 提供口令的代理进行登录。 | |
在 Solaris 安全 Shell 中使用端口转发 |
指定要在基于 TCP 的 Solaris 安全 Shell 连接中使用的本地端口或远程端口。 | |
使用 Solaris 安全 Shell 复制文件 |
在主机之间安全地复制文件。 | |
安全地从防火墙内的主机连接到防火墙外的主机。 |
使用与 HTTP 或 SOCKS5 兼容的 Solaris 安全 Shell 命令连接由防火墙隔离的主机。 |
Solaris 安全 Shell 可提供本地 shell 和远程 shell 之间的安全访问。有关更多信息,请参见 ssh_config(4) 和 ssh(1) 手册页。
如果用户的站点要实现基于主机的验证或用户公钥验证,则必须生成公钥/私钥对。有关其他选项,请参见 ssh-keygen(1) 手册页。
通过系统管理员确认是否配置了基于主机的验证。
启动密钥生成程序。
myLocalHost% ssh-keygen -t rsa Generating public/private rsa key pair. … |
其中,-t 是算法类型,可以是 rsa、dsa 或 rsa1 之一。
指定将保存密钥的文件的路径。
缺省情况下,文件名 id_rsa(表示 RSA v2 密钥)显示在括号中。可通过按回车键选择此文件。或者,可以键入替换的文件名。
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<按回车键> |
通过将字符串 .pub 附加到私钥文件的名称后,可以自动创建公钥的文件名。
键入使用密钥的口令短语。
此口令短语用于加密私钥。强烈建议不要使用空项。请注意,键入口令短语时,它们不会显示。
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 jdoe@myLocalHost |
检查结果。
检查密钥文件的路径是否正确。
% ls ~/.ssh id_rsa id_rsa.pub |
此时,已创建公钥/私钥对。
选择适当的选项:
如果管理员已配置了基于主机的验证,则可能需要将本地主机的公钥复制到远程主机。
现在即可登录到远程主机。有关详细信息,请参见如何使用 Solaris 安全 Shell 登录到远程主机。
如果站点使用公钥来进行用户验证,请在远程主机上装载 authorized_keys 文件。
(可选的)减少口令短语的提示。
有关过程,请参见如何减少 Solaris 安全 Shell 中的口令提示。有关更多信息,请参见 ssh-agent(1) 和 ssh-add(1) 手册页。
在以下示例中,用户可以访问运行 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 id_rsa.pub identity identity.pub myLocalHost% cat $HOME/.ssh/identity.pub | ssh myRemoteHost \ 'cat >> .ssh/authorized_keys && echo "Key copied"' |
以下过程不会更改私钥。此过程将更改私钥的验证机制,即口令短语。有关更多信息,请参见 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 会话。
键入 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)? |
初始连接到远程主机时,出现此提示为正常情况。
如果出现提示,请检验远程主机密钥的真实性。
所发送的命令将会加密。所接收的任何响应都会加密。
关闭 Solaris 安全 Shell 连接。
完成后,键入 exit 或者使用常规方法退出 shell。
myRemoteHost% exit myRemoteHost% logout Connection to myRemoteHost closed myLocalHost% |
如果不想键入口令短语和口令来使用 Solaris 安全 Shell,则可以使用代理守护进程。请在会话开始时启动守护进程。然后,使用 ssh-add 命令将私钥存储到代理守护进程中。如果您在不同的主机上拥有不同的帐户,请添加需要用于会话的密钥。
可以根据需要手动启动代理守护进程,如以下过程中所述。或者,可以将代理守护进程设置为在每个会话开始时自动运行,如如何将 ssh-agent 命令设置为自动运行中所述。
启动代理守护进程。
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 |
此时不会提示您输入口令短语。
在本示例中,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) 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 来使用 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 代理。
可以指定将本地端口转发到远程主机。实际上,分配了一个套接字用于侦听本地端的端口。从此端口到远程主机的连接基于安全通道。例如,可以指定端口 143 以使用 IMAP4 远程获取电子邮件。同样,也可以在远程端指定端口。
使用端口转发之前,管理员必须先在远程 Solaris 安全 Shell 服务器上启用端口转发。有关详细信息,请参见如何在 Solaris 安全 Shell 中配置端口转发。
以下示例说明如何使用本地端口转发来安全地接收来自远程服务器的邮件。
myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost |
此命令可将连接从 myLocalHost 上的端口 9143 转发到端口 143。端口 143 是 myRemoteHost 上的 IMAP v2 服务器端口。用户启动邮件应用程序时,需要指定本地端口号,如以下对话框中所示。
请勿将对话框中的 localhost 与 myLocalHost 混淆。myLocalHost 是假设的主机名,而 localhost 则是用于标识本地系统的关键字。
本示例说明企业环境中的用户如何将连接从外部网络中的主机转发到公司防火墙内的主机。
myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost |
此命令可将连接从 myOutsideHost 上的端口 9022 转发到本地主机上的端口 22(sshd 服务器)。
myOutsideHost% ssh -p 9022 localhost myLocalHost% |
以下过程说明如何使用 scp 命令在主机之间复制加密的文件。您可以在一台本地主机和一台远程主机之间,或者两台远程主机之间复制加密的文件。该命令的运行与 rcp 命令类似,不同的是 scp 命令会提示进行验证。有关更多信息,请参见 scp(1) 手册页。
也可以使用 sftp(一种形式更安全的 ftp 命令)。有关更多信息,请参见 sftp(1) 手册页。
启动安全的复制程序。
指定源文件、远程目标上的用户名和目标目录。
myLocalHost% scp myfile.1 jdoe@myRemoteHost:~ |
出现提示时,提供口令短语。
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 |
在命令行中指定远程主机名时,将代理命令规范限制为实例。如果对 outside-host 使用通配符,则可将代理命令规范应用于一组主机。
指定代理命令。该命令可以是以下之一:
/usr/lib/ssh/ssh-http-proxy-connect,用于 HTTP 连接
/usr/lib/ssh/ssh-socks5-proxy-connect,用于SOCKS5 连接
这些选项分别指定代理服务器和代理端口。如果存在,则代理将覆盖指定代理服务器和代理端口的任何环境变量,如 HTTPPROXY、HTTPPROXYPORT、SOCKS5_PORT、SOCKS5_SERVER 和 http_proxy。http_proxy 变量指定 URL。如果不使用这些选项,则必须设置相关的环境变量。有关更多信息,请参见 ssh-socks5-proxy-connect(1) 和 ssh-http-proxy-connect(1) 手册页。
指定要连接到的特定主机。请在命令行中使用 %h 替换参数来指定主机。
指定要连接到的特定端口。请在命令行中使用 %p 替换参数来指定端口。通过指定 %h 和 %p 而不使用 Host outside-host 选项,只要调用 ssh 命令即可将应用代理命令到主机参数。
运行 Solaris 安全 Shell,从而指定外部主机。
例如,键入以下命令:
myLocalHost% ssh myOutsideHost |
此命令可在个人配置文件中查找 myOutsideHost 的代理命令规范。如果找不到规范,则该命令将在系统范围的配置文件 /etc/ssh/ssh_config 中查找。该代理命令将替换 ssh 命令。
如何设置到防火墙外部主机的缺省连接说明如何在配置文件中指定代理命令。在本示例中,在 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