You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Plink建立连接后,远程SSH输入密码失败问题求助

解决Plink嵌套SSH时密码无法自动输入的问题

问题原因

你之前的方法无效,核心原因是:ssh命令启动后会直接接管终端会话,它不会从父进程的标准输入流读取密码,而是要求与终端进行交互式输入。所以你写在cmd.txt里的password2只会被server1的shell接收,根本传不到ssh user2@server2这个进程里。

可行解决方案

1. 使用sshpass自动传递密码(需server1安装sshpass)

修改cmd.txt内容为:

sshpass -p password2 ssh user2@server2

sshpass工具的作用就是帮你把密码直接传递给ssh命令,跳过交互式输入环节。

2. 配置SSH免密登录(推荐,更安全)

这是长期解决这类问题的最优方案,步骤如下:

  • 在本地生成SSH密钥对:
    ssh-keygen -t rsa
    
    一路回车默认设置即可,生成的公钥在~/.ssh/id_rsa.pub
  • 将公钥上传到server1的user1账户:
    plink.exe -ssh user1@server_ip1 -pw password1 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
    
  • 从server1将公钥上传到server2的user2账户:
    修改cmd.txt为:
    mkdir -p ~/.ssh && cat ~/.ssh/id_rsa.pub | ssh user2@server2 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    
    执行一次Plink命令完成公钥上传后,后续直接在cmd.txt里写ssh user2@server2就能免密登录。

3. 嵌套使用Plink命令(无需额外工具)

如果server1上也装有Plink,可以直接在本地Plink命令里嵌套调用,跳过中间shell的输入问题:

plink.exe -ssh user1@server_ip1 -pw password1 -t "plink.exe -ssh user2@server2 -pw password2"

这种方式直接让server1上的Plink处理到server2的连接,密码直接通过Plink的参数传递,避免了交互式输入问题。

内容的提问来源于stack exchange,提问作者Miriam Safwat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:51:20