如何从 Windows 批处理文件通过多个主机进行 ssh 跳跃
How to ssh hop through multiple hosts from a Windows batch file
如何从 HostA 为下面的连接写一个 Windows 批处理文件 运行?
SSH(使用本地端口转发):HostA => HostB => HostC。
HostA – HostB 必须使用 plink.exe
(HostA 运行s Windows)
HostB – HostC 必须使用 ssh
(HostB 运行s Linux).
我试试这个:
@echo off
chdir /d "C:\"
start plink.exe user_at_B@192.168.IP_of_B -pw userBpasswd
ssh -L user_at_C@192.168.IP_of_C
这个批处理脚本不执行第二个 ssh
命令(从 B 到 C),它只是打开一个新的 CMD window,其中没有任何反应。
请忽略 plink
的批处理文件中的密码存储。
您必须通过将 ssh
命令传递给 plink
命令行来告诉 plink
执行 ssh
:
start plink.exe -t user_at_B@192.168.IP_of_B -pw userBpasswd ssh -L user_at_C@192.168.IP_of_C
当在 Plink command-line 上提供命令时,Plink 默认不使用终端仿真。要强制终端仿真,要添加 -t
switch needs(如上所示)。
虽然:
- Imo,你的
ssh
命令是错误的 – 对于 -L
你需要指定一个额外的参数。
- 对于 SSH 跃点,您还可以使用端口转发,而不是在中间服务器上执行
ssh
。
参见 How to create SSH tunnel using PuTTY in Windows?
如何从 HostA 为下面的连接写一个 Windows 批处理文件 运行?
SSH(使用本地端口转发):HostA => HostB => HostC。
HostA – HostB 必须使用 plink.exe
(HostA 运行s Windows)
HostB – HostC 必须使用 ssh
(HostB 运行s Linux).
我试试这个:
@echo off
chdir /d "C:\"
start plink.exe user_at_B@192.168.IP_of_B -pw userBpasswd
ssh -L user_at_C@192.168.IP_of_C
这个批处理脚本不执行第二个 ssh
命令(从 B 到 C),它只是打开一个新的 CMD window,其中没有任何反应。
请忽略 plink
的批处理文件中的密码存储。
您必须通过将 ssh
命令传递给 plink
命令行来告诉 plink
执行 ssh
:
start plink.exe -t user_at_B@192.168.IP_of_B -pw userBpasswd ssh -L user_at_C@192.168.IP_of_C
当在 Plink command-line 上提供命令时,Plink 默认不使用终端仿真。要强制终端仿真,要添加 -t
switch needs(如上所示)。
虽然:
- Imo,你的
ssh
命令是错误的 – 对于-L
你需要指定一个额外的参数。 - 对于 SSH 跃点,您还可以使用端口转发,而不是在中间服务器上执行
ssh
。
参见 How to create SSH tunnel using PuTTY in Windows?