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

远程SSH执行脚本后无法退出问题求助

解决SSH执行远程命令后会话卡住无法自动退出的问题

针对你在Mac M1上使用sshpass+ssh执行远程命令后会话卡住的问题,可通过以下几种方式解决:

方案1:移除多余的bash -s参数

ssh默认会在远程主机启动登录shell,直接将here-doc内容传递给该shell执行即可,无需额外指定bash -s。执行完毕后远程shell会自动退出:

/usr/local/bin/sshpass -p mypass ssh -T myid@xyz.com << 'EOSSH'
checkfunctioncall(){
    cd "/u01/9999"
    mkdir "remotecalltest"
}
checkfunctioncall
EOSSH

方案2:强制远程bash跳过交互式配置加载

如果远程主机的~/.bashrc、~/.bash_profile等配置文件中存在交互式命令(如read、交互式提示符),会导致非交互式会话卡住。可指定bash以非交互式模式运行,跳过配置加载:

/usr/local/bin/sshpass -p mypass ssh -T myid@xyz.com 'bash --noprofile --norc -s' << 'EOSSH'
checkfunctioncall(){
    cd "/u01/9999"
    mkdir "remotecalltest"
}
checkfunctioncall
EOSSH

方案3:确保远程命令明确结束stdin输入

若必须保留bash -s,可在命令末尾添加exit,同时确保here-doc的结束符无额外空格或缩进(必须顶格写):

/usr/local/bin/sshpass -p mypass ssh -T myid@xyz.com 'bash -s' << 'EOSSH'
checkfunctioncall(){
    cd "/u01/9999"
    mkdir "remotecalltest"
}
checkfunctioncall
exit
EOSSH

核心原因

会话卡住通常是因为远程shell/bash执行完你的命令后,仍在等待标准输入,或者加载了包含交互式操作的配置文件,导致无法自动终止会话。上述方案通过简化命令调用、跳过干扰性配置、明确结束会话三种方式解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:02:17