使用 cygwin 的 ssh 从 windows 登录到 linux-hosts 后,在退出远程 shell 时,我总是收到烦人的 msg:
“被信号 1 杀死”
我用谷歌搜索,并意识到它无害,但仍然很烦人......有人建议你可以通过使用摆脱该消息
$ ssh -q ...
但这对我尝试过的任何机器都没有影响。
任何人都知道摆脱此味精的有效解决方案吗?
当您通过另一台主机代理您的 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
,ssh
inProxyCommand
将导致输出。如果你在-q
那里添加,它将被抑制:
ProxyCommand ssh -q proxy nc %h %p
您可能会惊讶于这个输出与 Cygwin 无关——它也发生在 Linux 上。
将以下行添加到您的~/.ssh/config
文件中可以压缩该消息。
更新:QUIET 必须全部为大写,并且必须为配置中的每个主机添加。
LogLevel QUIET
在第一行添加将全局压缩消息。只有放在Host
.
我正在添加一个新答案,因为在不同的情况下我有一个新的解决方案。
使用现代ProxyJump
指令时,没有地方可以放置-q
,如下所示ProxyCommand
:
Host target
ProxyJump proxy
与其使用 切换回更手动的跳转定义ProxyCommand
,不如使用 的解决方案ProxyJump
添加LogLevel QUIET
到Host proxy
定义中:
Host target
ProxyJump proxy
Host proxy
LogLevel QUIET
-q
这将具有与in相同的ProxyCommand
效果ssh -q proxy ...
。
在脚本 bash 中,要删除此消息,请在顶部添加以下内容:
exec 2> >(grep -v "Killed by signal 1.")
如果您使用 ControlMaster 指令启用连接共享,您可以在通过另一台主机代理会话时共享单个连接。然后,您可以将 ControlPersist 指令设置为 1 秒,这将通过延迟共享连接的终止来避免“被信号 1 杀死”错误。
将以下内容添加到您的 ~/.ssh/config
ControlMaster auto
ControlPersist 1
ControlPath ~/.ssh/.%C
也许,您可能喜欢PuTTY作为替代品。我不认为它给出了那个错误,它允许你做一些事情,比如保存连接信息以及其他细节。
虽然我还没有尝试过,但您也可以将 sterr(我相信消息将被发送到的流)重定向到 /dev/null (实际上,就是事情走向死亡的 bitbucket 或无底洞)。你可以做类似的事情:
ssh 用户@主机 2>/dev/null