我有十个左右的服务器,我定期使用SSH连接到这些服务器。每台计算机在我的本地计算机上都有一个条目
文件。
为了避免在Internet连接不可避免地中断时失去对运行进程的控制,我总是在
会话。我希望有一种方法可以让tmux在每次启动SSH连接时都自动连接,这样我就不必总是键入
在我用SSH登录之后。
不幸的是,这并不像我最初希望的那样简单。
我不想将任何命令添加到
因为我只想将它用于SSH会话,而不是本地会话。
添加
到
在服务器上只会导致错误
在连接之后引发,即使
选项添加到本地SSH配置文件中该服务器的行中。
发布于 2016-10-22 21:02:51
服务器端配置:
要在通常通过SSH (且仅通过SSH)登录时自动启动远程服务器上的tmux,请编辑
远程服务器上的用户或根用户(或两者)的相应权限:
if [[ -n "$PS1" ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux
fi
此命令创建一个tmux会话,名为
如果不存在,则重新附加到已存在的具有该名称的会话。如果您的连接中断,或者当您在几周前忘记了一个会话时,每次SSH登录都会自动将您带回您离开的tmux-ssh会话。
从客户端连接:
没什么特别的,只是
..。
发布于 2015-09-28 15:48:58
连接:
ssh user@host -t "tmux new-session -s user || tmux attach-session -t user"
会话期间:
使用
至
完成会话
(tmux窗口关闭)或
至
临时分离
并稍后再次连接到它。
记住!
如果您的服务器重新启动会话丢失!
当您在tmux中时,您可以随时使用
查看
会话列表
并将电流切换到另一个。
修复你的.bashrc:
我建议你在你的
function tmux-connect {
TERM=xterm-256color ssh -p ${3:-22} $1@$2 -t "tmux new-session -s $1 || tmux attach-session -t $1"
}
它使用
默认端口。还要定义快速连接别名:
alias office-server='tmux-connect $USER 192.168.1.123'
alias cloud-server='tmux-connect root my.remote.vps.server.com 49281'
无密码登录:
如果你不想每次都输入密码而不是生成
关键字
自动登录
ssh-keygen -t rsa
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_rsa
将您的公钥放到远程主机上:
ssh-copy-id -p user@hostname
其他提示:
如果您想使用
临时会话id
,它与本地bash会话相对应,用作
tmux
id:
SID=$USER-$BASHPID
ssh user@host -t "tmux new-session -s $SID || tmux attach-session -t $SID"
发布于 2017-05-06 19:10:30
我使用了@kingmeffisto中的代码行(我不允许评论这个答案),并且我添加了一个出口,因此终止tmux也会终止ssh连接。然而,这中断了SFTP会话,所以我必须检查
而不是
..。
2018年4月编辑:新增交互终端测试,通过
允许像Ansible这样的工具工作。
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t ssh || tmux new-session -s ssh
exit
fi
https://stackoverflow.com/questions/27613209
复制相似问题