Batch file 如何通过ssh从Windows批处理文件跳转到多个主机

Batch file 如何通过ssh从Windows批处理文件跳转到多个主机,batch-file,ssh,cmd,putty,plink,Batch File,Ssh,Cmd,Putty,Plink,如何编写Windows批处理文件,以便从HostA为以下连接运行 SSH(带有本地端口转发):HostA=>HostB=>HostC HostA–HostB必须使用plink.exe(HostA运行Windows) HostB–HostC必须使用ssh(HostB运行Linux) 我试试这个: @echo off chdir /d "C:\" start plink.exe user_at_B@192.168.IP_of_B -pw userBpasswd ssh -L user_at_C@19

如何编写Windows批处理文件,以便从HostA为以下连接运行

SSH(带有本地端口转发):HostA=>HostB=>HostC

HostA–HostB必须使用
plink.exe
(HostA运行Windows)
HostB–HostC必须使用
ssh
(HostB运行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窗口,其中不会发生任何事情


请忽略批处理文件中
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命令行上提供该命令时,默认情况下Plink不使用终端仿真。要强制进行终端仿真,需要添加(如上所示)


尽管:

  • 依我看,您的
    ssh
    命令错误–对于
    -L
    ,您需要指定一个附加参数
  • 对于SSH-hop,您还可以使用端口转发,而不是在中间服务器上执行
    SSH


您似乎正在将
start
plink.exe
一起使用,这意味着命令已启动并立即运行下一行,
ssh…
(实际上两行同时运行)。我确信这不是您想要它做的,您需要一个接一个地运行,即使用
/Wait
或将它们作为一个命令连接起来。您已经收到的答案选择后者。@Compo
ssh
若要按预期工作,必须在服务器上执行,而不是在本地执行。所以这不是我的选择,我想一定是这样。对于
start plink.exe user__B@192.168.IP_of_B-pw userBpasswd ssh user_位于_C@192.168.IP_of_C
I get“由于stdin不是终端,因此不会分配伪终端”错误。P.S.-L代表端口转发,我用它。你为什么认为这是个错误?那只是供参考的,不是吗我知道
-L
做什么。这就是为什么我知道它需要一个参数,对吗?是的:)那么我如何使这个终端地址消息排序?取决于你所说的“排序”是什么意思。如果您想删除该消息,可以尝试添加
-T
切换到
ssh
。我的意思是
plink.exeuserB@IPofBsshuserC@IPofC
不工作,显示stdin消息,cmd终端关闭:)哦,此消息也显示:“权限被拒绝,请重试。权限被拒绝,请重试。权限被拒绝(公钥、密码、键盘交互)。“我猜这与ssh密码请求有关。