cygwin ssh 在退出时给出“被信号 1 杀死”
Posted
技术标签:
【中文标题】cygwin ssh 在退出时给出“被信号 1 杀死”【英文标题】:cygwin ssh gives "Killed by signal 1" on exit 【发布时间】:2012-09-20 07:34:04 【问题描述】:使用 cygwin 的 ssh 从 windows 登录到 linux-hosts 后, 退出远程外壳时,我总是收到烦人的消息:
“被信号 1 杀死”
我用谷歌搜索,发现它无害,但仍然很烦人...... 有人建议您可以使用
来摆脱该消息$ ssh -q ...
但这对我尝试过的任何机器都没有影响。
任何人都知道摆脱此消息的有效解决方案?
【问题讨论】:
您找到解决方案了吗? 不。仍然收到那个消息。 @Yotam 看看我的回答 【参考方案1】:在脚本 bash 中,要删除此消息,请在顶部添加以下内容:
exec 2> >(grep -v "Killed by signal 1.")
【讨论】:
【参考方案2】:我正在添加一个新答案,因为我在不同的情况下有一个新的解决方案。
使用现代的ProxyJump
指令时,没有地方可以放置-q
,与ProxyCommand
一样:
Host target
ProxyJump proxy
与ProxyCommand
切换回更手动的跳转定义不同,ProxyJump
的解决方案是将LogLevel QUIET
添加到Host proxy
定义中:
Host target
ProxyJump proxy
Host proxy
LogLevel QUIET
这将与ProxyCommand
的ssh -q proxy ...
中的-q
具有相同的效果。
【讨论】:
【参考方案3】:在您的 ~/.ssh/config
文件中添加以下行可以压缩该消息。
更新:QUIET 必须全部大写并且必须为配置中的每个主机添加。
LogLevel QUIET
在第一行添加将全局压缩消息。只有放在Host
下的特定主机才会生效。
【讨论】:
更多细节在这里:digitalocean.com/community/tutorials/…【参考方案4】:如果您使用 ControlMaster 指令启用连接共享,您可以在通过另一台主机代理会话时共享单个连接。然后,您可以将 ControlPersist 指令设置为 1 秒,这将通过延迟共享连接的终止来避免“被信号 1 杀死”错误。
将以下内容添加到您的 ~/.ssh/config
ControlMaster auto
ControlPersist 1
ControlPath ~/.ssh/.%C
【讨论】:
【参考方案5】:当您通过另一台主机代理您的 ssh 会话时会发生这种情况。示例.ssh/config
文件:
# machine with open SSH port
Host proxy
HostName foo.com
# machine accessible only from the above machine
Host target
HostName 192.168.0.12
ProxyCommand ssh proxy nc %h %p
当您从ssh target
退出时,ProxyCommand
中的ssh
将导致输出。如果您在此处添加-q
,它将被禁止:
ProxyCommand ssh -q proxy nc %h %p
您可能会惊讶于此输出与 Cygwin 无关——它也发生在 Linux 上。
【讨论】:
我的一个仍在生产中的旧 SunOS 机器之一,OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
不支持此选项。还有-W
跟原来的问题没有关系。【参考方案6】:
也许,您可能更喜欢PuTTY。我认为它不会给出该错误,并且它允许您执行保存连接信息以及其他细节等操作。
虽然我还没有尝试过,但您也可以将 sterr(我相信消息将被发送到的流)重定向到 /dev/null(实际上是事情去向的 bitbucket 或无底洞)死)。你可以做类似的事情:
ssh user@host 2>/dev/null
【讨论】:
以上是关于cygwin ssh 在退出时给出“被信号 1 杀死”的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我使用 Cygwin X11 ssh 时,Vista 会抱怨一个死进程,我该如何让它关闭?