假设你需要进入一个不能直达(由于不在互联网上,或其它原因)的节点,但你可以进入守护它前端的节点。 你不用每次都 ssh 进入该守护主机,然后再连接到第二个节点。ssh_config 内拥有为此而设、好用的 ProxyCommand 功能,而下面是 ~/.ssh/config 的样例:

Host bastion
  Hostname bastion.yourdomain.com
  ForwardAgent yes

Host hidden
  Hostname IP.or.FQDN.known.by.bastion
  ProxyCommand ssh bastion -W %h:%p 2>/dev/null

现在你可以从你的手提计算机/工作站,利用 ssh 直接进入「隐藏」的机器,而无须依赖守护主机上的指令壳:

ssh hidden hostname
hidden.yourdomain.com

这个方法亦能让 sftp/scp 直接复制至该节点。

样例

如要访问 CentOS CI 的机器,你需要在你的 .ssh/config 档内加入下列设置(并对该文件执行 chmod 600):

Host jump.ci
 Hostname jump.ci.centos.org
 User <your_ci_username>
 ProxyCommand none
 ForwardAgent yes
 GSSAPIAuthentication no

Host *.ci.centos.org
  ProxyCommand ssh jump.ci -W %h:%p
  ForwardAgent yes
  GSSAPIAuthentication no

加入以下内容后,你便能以 ssh 进入你的项目帐户 'ssh <项目名称>@ci-slave01.ci.centos.org' 并在该机器上工作。

Translation of revision 6

zh/TipsAndTricks/SshTips/JumpHost (last edited 2018-03-04 10:26:00 by TimothyLee)