我有一台笔记本电脑,上面运行着选美(PuTTy SSH 密钥代理)。如果我通过 ssh 连接到系统并启动屏幕,则 ssh 密钥转发工作正常。
但是,如果我与该屏幕会话断开连接,请注销,然后重新连接——密钥转发不再起作用。我假设这是因为当我重新连接时,密钥转发设置在新 ssh 会话的不同端口上,而不是旧的。
有没有办法教单个屏幕窗口重新连接到代理转发,以便我可以使用我的密钥再次转发?
我的解决方案更健壮一些。将其放在远程端的 .bash_profile 中。
if [ -z "${STY}" -a -t 0 ]; then
reattach () {
if [ -n "${SSH_AUTH_SOCK}" ]; then
ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-screen"
SSH_AUTH_SOCK="${HOME}/.ssh/agent-screen" export SSH_AUTH_SOCK
fi
exec screen -A -D -RR ${1:+"$@"}
}
fi
Run Code Online (Sandbox Code Playgroud)
然后我使用reattach而不是screen. 这可以使用command screen -A ${1:+"$@"}和“屏幕”而不是“重新连接”来完成。
在@David Mackintosh 的回答中使用“别名”解决方案的问题在于,在屏幕中运行的进程现在在远程端具有相同的 SSH_AUTH_SOCK 值。想想下面的场景。
SSH_AUTH_SOCK值SSH_AUTH_SOCK在远程设置新值screen或tmux使用 SSH_AUTH_SOCKscreenSSH_AUTH_SOCK值SSH_AUTH_SOCK值诀窍是让在屏幕内运行的进程使用新值。您可以通过在SSH_AUTH_SOCK每次调用时将符号链接重新指向当前screen(对于新会话或重新附加会话)来实现。
| 归档时间: |
|
| 查看次数: |
3268 次 |
| 最近记录: |