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

如何在Windows通过Git Bash脚本用账号、IP和密码SSH远程Linux服务器

在Windows Git Bash中实现SSH自动登录并执行远程Linux命令

原写法的问题

你之前写的 ssh username@ip <password> 无法实现密码登录——SSH不支持通过标准输入直接传递密码,这种写法会把密码当作远程服务器要执行的命令,根本完成不了身份验证。

方法一:SSH密钥认证(推荐,安全且无密码)

这是最可靠的方式,无需每次输入密码,也避免了明文存储密码的风险。

  1. 生成SSH密钥对
    在Git Bash中执行:
ssh-keygen -t ed25519 -C "your_email@example.com"

按回车跳过所有设置,密钥对会生成在 ~/.ssh 目录下(对应Windows系统的 C:\Users\你的用户名\.ssh)。

  1. 将公钥复制到远程服务器
    执行以下命令,按提示输入一次远程服务器的密码即可完成配置:
ssh-copy-id username@远程服务器IP

之后再通过SSH连接该服务器时,就不需要输入密码了。

  1. 编写执行远程命令的脚本
    创建一个名为 remote_run.sh 的脚本:
#!/bin/bash
# 配置远程服务器信息
REMOTE_USER="你的远程用户名"
REMOTE_IP="远程服务器IP"

# 定义要执行的远程命令,多命令用分号分隔或换行
REMOTE_CMDS="
echo '当前远程登录用户:\$USER'
pwd
ls -l /home
"

# 建立SSH连接并执行命令
ssh ${REMOTE_USER}@${REMOTE_IP} "${REMOTE_CMDS}"

给脚本添加执行权限:

chmod +x remote_run.sh

直接运行脚本即可:

./remote_run.sh

方法二:使用expect脚本(仅在必须用密码登录时使用)

如果无法配置密钥认证,可借助expect工具自动输入密码,但这种方式需要明文存储密码,安全性较低。

  1. 安装expect
    Git Bash默认没有expect,需要手动安装(可通过MinGW包管理器或下载对应二进制文件添加到Git Bash的PATH中)。

  2. 编写expect登录脚本
    创建 auto_ssh.exp 脚本:

#!/usr/bin/expect
# 配置远程服务器信息
set username "你的远程用户名"
set ip "远程服务器IP"
set password "你的远程密码"
set cmds "echo '远程执行命令测试'; pwd; ls"

# 启动SSH连接
spawn ssh $username@$ip
# 匹配密码提示并输入密码
expect "password:"
send "$password\r"
# 执行预设命令
send "$cmds\r"
# 退出远程连接(如果需要留在远程终端,删除这两行)
send "exit\r"
expect eof

运行脚本:

expect auto_ssh.exp

注意事项

  • 优先使用SSH密钥认证,避免明文密码泄露
  • 如果使用expect脚本,尽量不要把密码直接写在脚本里,可通过环境变量或读取本地加密文件的方式获取
  • Git Bash的Shell环境与Linux兼容,脚本写法基本一致

内容的提问来源于stack exchange,提问作者Satyam Shishodiya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:50:18