我主要在 mac 上工作,ssh/tmux 连接到 Linux 机器来完成我的工作。我在 Linux 机器上运行了 ssh-agent。我有
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
在我的.tmux.conf
. 但是,每当我重新连接到此会话时,我都必须运行
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)
为了$SSH_AUTH_SOCK
正确设置新的 tmux 窗口。我宁愿不必这样做。有任何想法吗?
我想我没有很好地解释这一点。这是我在远程机器上打开 shell 的 shell 函数:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Run Code Online (Sandbox Code Playgroud)
当TMUX运行此ssh命令,$SSH_AUTH_SOCK
是没有设置,即使是在我的本地环境设置。如果我使用setenv
上面的命令将其放入 tmux 的环境中,则一切正常。我的问题是,为什么我必须运行 setenv 命令?
更多信息:
当我附加到现有会话时,$SSH_AUTH_SOCK
未在 tmux 环境(或全局环境)中设置。
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)
如果我手动设置它,事情会起作用:
% …
Run Code Online (Sandbox Code Playgroud) 中的一些错误消息以journalctl
红色和白色显示。如果我正在创作我自己的systemd
服务,我该如何格式化我的消息,以便它们以红色或白色显示。这是一种突出错误的好方法。