Ric*_*ich 18 ssh ssh-agent tmux macos
我为我的 github 帐户设置了一个私钥,我相信它的密码存储在 OS X 的钥匙串中。当我打开终端窗口并输入ssh git@github.com.
但是,当我在 ssh 会话上或本地在 tmux 会话中运行 bash 时,每次尝试 ssh 到 github 时,我都必须输入密码。
这个问题表明 screen 存在类似的问题,但我不太了解这个问题,无法在 tmux 中修复它。还有这个页面,其中包含一个相当复杂的解决方案,但用于 zsh。
编辑:
为了回应@Mikel 的回答,我从本地终端得到以下输出:
[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~]
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Run Code Online (Sandbox Code Playgroud)
而通过 ssh 或 tmux 我得到:
[~]
$ echo $SSH_AUTH_SOCK
[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found
Run Code Online (Sandbox Code Playgroud)
echo $SSH_AGENT_PID 无论我从哪个 shell 运行它,都不返回任何内容。
mis*_*lav 10
一个优雅的解决方案,摘自 dagit.o:
创建 ~/.ssh/rc
#!/bin/bash
if [ -S "$SSH_AUTH_SOCK" ]; then
ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi
Run Code Online (Sandbox Code Playgroud)
添加 ~/.tmux.conf
set -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock
Run Code Online (Sandbox Code Playgroud)
在您的.tmux.conf配置文件中,添加以下行:
设置 -g 更新环境“SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION”
这会导致这些环境变量从您的主 shell 复制到在 tmux 中打开的任何 shell,然后允许 ssh-agent 在这些 tmux shell 中正常工作。
小智 4
我的同事创建了一些 bash 函数来帮助寻找实时代理:https ://github.com/wwalker/ssh-find-agent
他主要将它用于系统之间的连接(笔记本电脑到台式机等),但我最常将它用于本地 tmux 会话,在其中您从窗口管理器(我自己是 OS X)注销/登录。
用法
下载 ssh-find-agent.bash (git clone git://github.com/wwalker/ssh-find-agent.git有效)。
将以下内容添加到~/.bashrc:
. /path/to/ssh-find-agent.bash
Run Code Online (Sandbox Code Playgroud)然后您可以键入以下命令在当前 shell 中设置 SSH_AUTH_SOCK:
set_ssh_agent_socket
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
13884 次 |
| 最近记录: |