我有一个 ssh 会话并且正在运行一个脚本。我想终止脚本而不退出 ssh 会话。如果我在本地 PC 中运行脚本,则按Ctrl+ 键C ,脚本就会停止,而如果我在远程会话中按Ctrl+ 键C,则关闭 ssh 会话本身(在本例中还关闭脚本)。如何在不中断 ssh 连接的情况下停止远程 shell 中的脚本?
我使用 Windows 中的 Git Bash 在标准 Ubuntu 发行版中使用常用命令进行连接。ssh user@ip
在我的Windows客户端中,.ssh/config
如下:
Host 192.168.XXX.YYY
HostName 192.168.XXX.YYY
User auser
ForwardAgent yes
Host 192.168.XXX.ZZZ
HostName 192.168.XXX.ZZZ
User auser
它们与我正在使用的远程服务器无关。
答案1
安装 Git for Windows 2.35.1.2 后,我得到了同样的行为。
从降级到版本 2.34.1 后我可以避免它这里。
答案2
我今天也遇到了这个问题——这似乎是CtrlC处理 Windows 版 Git 中捆绑的一个错误/usr/bin/ssh
。在 Git bash 中,使用其预打包的ssh
会话将在按下 时终止CtrlC,而不是将其发送到远程会话以中断那里正在运行的内容。然而,如果我跑了/c/Windows/System32/OpenSSH/ssh
,CtrlC表现就会如预期。您可以ssh
通过which ssh
在 bash 会话中键入内容来查看正在执行的内容。
我通过重新安装适用于 Windows 的 Git v2.35.1.2 纠正了该问题 — 取消选择“仅显示新选项”复选框,以便您可以重新配置所有内容,并且在安装时,其中一个选项将是“使用外部 OpenSSH”。当然,您必须已经在 Windows 系统上安装了 OpenSSH 才能正常工作 - 您可以在 Windows 10/11 机器上通过转到“设置”→“应用程序”→“可选功能”→“添加可选功能”并选择“OpenSSH 客户端”来执行此操作。
更新:我也报告了这个问题,并已在最新快照中修复。因此,如果您希望保留捆绑版本,则ssh
应该在下一个版本中修复它。
答案3
gitbash在这件事上确实有问题。尝试Windows PowerShell
。醒来很好。