如何从 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?