ubi*_*bik 7 ssh byobu gnu-screen ssh-agent
byobu 无法很好地连接到 ssh-agent 套接字。实际上,我只能通过 ssh-agent 建立一个连接,但是如果我尝试使用该代理建立另一个 ssh 连接,则它不起作用。我试过了
setenv SSH_AUTH_SOCK `echo $SSH_AUTH_SOCK`
Run Code Online (Sandbox Code Playgroud)
在,~/.byobu/profile
但它并没有奏效。
我不确定为什么人们试图在终端多路复用器配置级别解决这个问题。这不是一个适合它的地方,除非你想因为你已经切换到 tmux、screen 等而不得不再次这样做。
每次打开另一个窗口时,您的 shell 都会被执行并读取其配置文件。
从你的 shell 配置文件中获取这个可以解决我使用的任何 shell 的问题:
#!/bin/bash
SSH_AGENT_TYPE="ssh"
SSH_AGENT_INFO="${HOME}/.ssh-agent"
source_agent_info() {
export SSH_AUTH_SOCK=''
export SSH_AGENT_PID=''
if [[ -f ${SSH_AGENT_INFO} ]]; then
source ${SSH_AGENT_INFO}
fi
}
agent_running() {
source_agent_info
proc_file="/proc/${SSH_AGENT_PID}/cmdline"
if [[ "${SSH_AGENT_PID}" =~ ^[0-9]+$ ]] && \
stat "${proc_file}" &> /dev/null && \
grep ssh-agent "${proc_file}" &> /dev/null; then
return 0
else
return 1
fi
}
run_ssh_agent() {
ssh-agent 2>&1 | grep -v echo > "${SSH_AGENT_INFO}"
source_agent_info
}
if ! agent_running; then
run_ssh_agent
fi
Run Code Online (Sandbox Code Playgroud)
Bug #664059中详细介绍了此问题,并在 byobu 版本 3.7 及更高版本中解决。
基本上,存在一个错误的假设,/var/run/screen/S-$USER/
即在需要设置 SSH 套接字时存在且可写。所以我将 SSH 套接字的符号链接移至$HOME/.byobu/.ssh-agent
.