设置:组中只有一台服务器可以通过 SSH 访问。其他只能通过 RSH 从前者访问。
因此,当我想在其他服务器上执行命令时,我会这样做:
$ ssh asd10 rsh asd7 hostname
ASD7
是否可以将其合并ProxyCommand
到经典的 SSH 跳转主机方式?
这样的配置将允许您通过主机 A 进行代理。
$ cat .ssh/config Host host-a User your_username Hostname 10.0.0.5 Host host_b User your_username Hostname 192.168.0.1 Port 22 ProxyCommand ssh -q -W %h:%p host-a
现在,如果您想连接到主机 B,您只需输入以下内容:
ssh host_b
...这样我就可以运行:
$ ssh asd7 hostname
ASD7
?
[补充]
如果我像@cas问的那样直接去:
$ ssh -t -o ProxyCommand='ssh asd10 rsh %h' asd7 hostname
tcgetattr: Invalid argument
ioctl TIOCGETP: Invalid argument
ioctl TIOCLGET: Invalid argument
ioctl TIOCGETC: Invalid argument
ioctl TIOCGLTC: Invalid argument
ioctl TIOCGETP: Invalid argument
ioctl TIOCLGET: Invalid argument
ioctl TIOCSLTC: Invalid argument
ioctl TIOCSETC: Invalid argument
ioctl TIOCSETN 3: Invalid argument
ioctl TIOCLSET: Invalid argument
Killed by signal 2.
...它会一直循环,直到我按 Ctrl-C。
它可能会等待输入,然后不生成任何输出。我没有并行使用工作 shell 会话来检查前者是否确实生成了任何新进程。