只能通过通过ssh

问题描述:

所以,我有我的本地机器上运行tmux会话连接到本地TMUX会议,但我只能连接到它(或看到有关它的信息),如果我ssh回到自己放在第一位:只能通过通过ssh

% tmux ls 
failed to connect to server: Connection refused 
% ssh localhost -t tmux ls 
Password: 
0: 2 windows (created Mon Nov 26 12:47:44 2012) [208x52] (attached) 
Connection to localhost closed. 

这还不是最坏的箍得跳通过,但为什么会发生,以及如何解决它?

对于其客户端/服务器通信,tmux在TMPDIR环境变量指定的目录下使用一个已命名的套接字(在基于UID的子目录中)。如果该环境变量未设置(或它是空的),则TMUX使用从paths.h_PATH_TMP定义的目录;这往往是/tmp

:的“会话”下面的用途是指登录会话,不TMUX会议。

我的猜测是,你SSH会话都有一个共同的TMPDIR值(可能没有一个在所有),而你的“正常”的会话使用不同的TMPDIR值。由于TMPDIR值在您的不同会话中不同,因此一种会话类型的客户端无法直接“查看”以其他会话类型启动的服务器(例如,客户端尝试使用/var/folders/random/directories/tmux-500/default,但服务器正在侦听/tmp/tmux-500/default)。

要解决,你可以简单地调整你的TMPDIR匹配不管它通常是在你的SSH会议的问题:

TMPDIR=$(/usr/bin/ssh localhost -t 'echo $TMPDIR') && export TMPDIR 

你可以决定你的客户尝试使用这样的路径:

tmux -L temp start\; info | grep path 

这将创建一个使用名为temp的套接字而不是default的套接字,并向您显示它正在使用的套接字的路径。

TMUX管理下在/ var /运行/ TMUX的/ tmp/TMUX-USERID插座,每个插座连接到它

例如一个名字:

$ pwd 
/tmp/tmux-2037 
$ ls 
default foo 
$ tmux -L foo ls 
0: 1 windows (created Tue Dec 4 13:36:10 2012) [172x52] 
$ tmux -L default ls 
0: 1 windows (created Tue Nov 20 16:21:14 2012) [188x47] 
$ tmux ls 
0: 1 windows (created Tue Nov 20 16:21:14 2012) [188x47] 

看看在你下/VAR得到了什么/运行/ TMUX的/ tmp/TMUX-USERID,并尝试连接到由名字其中的一些插座,看看如果这是有利于您的问题(运行TMUX LS是一样的运行TMUX - 大号默认LS)


如果一切都失败了,完全分离tmux(关闭所有窗口并完全退出)然后rm/tmp/tmux-500/default可能是值得的,以查看当前问题是否有状态。

+0

我在'/ var/run'目录下没有'tmux'目录(我正在使用'tmux' 1.6)。 – rampion

+1

确认我们对此深感抱歉,我在寻找一个古代版的TMUX。看起来套接字已经迁移到/ tmp。 – hanumantmk

+0

'/ tmp/tmux-500 /'中的唯一条目是'default',但'tmux -L default ls'仍然给我'连接失败:连接被拒绝。 – rampion