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

PowerShell脚本SSH连接远程Linux执行后卡住问题求助

SSH执行远程脚本后连接不退出的解决办法

问题原因

你在SSH命令中使用了-tt参数,该参数会强制给远程主机分配伪终端(PTY)。当脚本执行完成后,伪终端会停留在交互式shell状态,导致SSH连接不会自动断开,进而卡住你的PowerShell脚本。

具体解决方案

1. 移除-tt参数(优先推荐)

如果不需要交互式终端操作,直接删除-tt参数,让SSH以非交互式模式执行脚本,执行完毕后会自动退出连接:

foreach($wiersz in $zm1.ParamValue -split ";")
{
   cmd /c "ssh -i k4 user@$($wiersz) < script.sh"
}

2. 替换logout为exit并明确执行方式

如果必须保留-tt参数,将脚本中的logout替换为exit(logout仅适用于交互式shell,非交互式场景下exit更可靠),同时在SSH命令中明确指定用非交互式bash执行脚本:

foreach($wiersz in $zm1.ParamValue -split ";")
{
   cmd /c "ssh -tt -i k4 user@$($wiersz) 'bash -s' < script.sh"
}

修改后的script.sh:

#!/bin/bash
awk -F" " -v OFS=$";" '/\.channel\..*-- START/ {print $1" "$2";"$6";tst1n"}' /opt/logs/server.log.$(date +%Y%m%d -d yesterday) | grep -vw 'priv.poller' > services_$(hostname).log
exit

3. 后台执行SSH命令(可选)

如果允许脚本后台执行,添加-f参数让SSH在执行完命令后转到后台,避免阻塞PowerShell:

foreach($wiersz in $zm1.ParamValue -split ";")
{
   cmd /c "ssh -f -i k4 user@$($wiersz) < script.sh"
}

内容的提问来源于stack exchange,提问作者Marcin Krzyżanowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:50:40