byobu 和 ssh-agent

byobu 和 ssh-agent

byobu 无法很好地连接到 ssh-agent 套接字。实际上,我只能通过 ssh-agent 建立一个连接,但如果我尝试使用代理建立另一个 ssh 连接,则无法正常工作。我试过了

setenv SSH_AUTH_SOCK `echo $SSH_AUTH_SOCK`

~/.byobu/profile效果不太好。

答案1

我不确定为什么人们会尝试在终端多路复用器配置级别解决这个问题。这不是一个适合的地方,除非你因为切换到 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

答案2

此问题的详细信息错误 #664059,并针对 byobu 3.7 及以上版本进行了解决。

基本上,存在一个错误的假设,/var/run/screen/S-$USER/即在需要设置 SSH 套接字时将存在且可写。因此,我将指向 SSH 套接字的符号链接移至$HOME/.byobu/.ssh-agent

答案3

有一个错误报告#616899这听起来和你的问题很相似。他们建议下载byobu v3.1并手动安装。

答案4

我一直在做,ssh-agent byobu所有的环境变量都很容易传递。

相关内容