我正在尝试解决突然爆发的短期 SSH 连接问题。这些连接是从我的 Mac(MBP、Catalina 10.15.6 zsh
)发起到某些 Linux 的“电器”存在于我的网络上的 - 特别是覆盆子派。连接终止后,他们将消息留client_loop: send disconnect: Broken pipe
在终端中。
然而:仅作为背景提供,以防与以下内容相关我的直接问题:
为什么命令ssh-agent -k
不杀死ssh-agent
?
似乎失败是因为SSH_AGENT_PID
未设置环境变量。我根据我在 Mac 终端应用程序中看到的内容猜测:
1. 清单ssh相关进程:
% pgrep -f ssh
2138
75076
75942
75943
75944
% ps 2138
PID TT STAT TIME COMMAND
2138 ?? S 0:00.26 /usr/bin/ssh-agent -l
PID2138
是ssh-agent
,其他 PID 是ssh
与 Raspberry 或 Ubuntu 盒子的活动连接 - 所有 Linux。
2.杀死ssh-agent
IAW man ssh-agent
:
从man ssh-agent
:
ssh-代理 [-c | -s] -k
-k 终止当前代理(由 SSH_AGENT_PID 环境变量指定)。
% ssh-agent -k
SSH_AGENT_PID not set, cannot kill agent
% sudo ssh-agent -k
SSH_AGENT_PID not set, cannot kill agent
% echo $SSH_AGENT_PID
%
我可以ssh-agent
使用kill 2138
, 或 with 来杀死pkill ssh-agent
,所以它似乎也许答案是Apple 的版本ssh-agent
不提供环境变量SSH_AGENT_PID
。但如果这就是答案,就会引发另一个问题:是否有不分配环境变量的正当理由SSH_AGENT_PID
?
另请注意,相关问题。然而,该问题的 OP 并未指出他的 SSH 客户端主机是 macOS。他还表示SSH_AGENT_PID
尚未确定,但似乎只关心如何ssh-agent
开始。就我而言 (macOS),ssh-agent
在启动 ssh 连接时启动。我在“类似问题”建议箱里找到了其他问答;我读过其中一些,但似乎没有一个与我的相同。
答案1
答案2
我在 ubuntu 18.04 上遇到了同样的问题。使用pidof ssh-agent
获取 ID后,以下内容对我有用:
export SSH_AGENT_PID=<pid>
eval `ssh-agent -k`