
Я хочу использовать tmux или screen автоматически после ssh. Я написал код в .ss/config, который мне в этом помогает.
# ~/.ssh/config
Match exec "[[ $(ps h o args p $PPID | wc -w) -eq 2 ]]"
RemoteCommand SESSION_NAME="debek"; tmux a -t ${SESSION_NAME} || tmux new -s ${SESSION_NAME} || screen -r ${SESSION_NAME} || screen -S ${SESSION_NAME}
RequestTTY yes
На данный момент есть одна проблема. Если я хочу подключиться к тому же серверу со второго терминала на моем локальном компьютере, это, очевидно, прикрепит меня к тому же имени сеанса "debek". Я могу сделать SCREEN_NAME="debek-{RANDOM}"
уникальное имя сеанса, чтобы обойти это, но когда я, например, потеряю соединение и попытаюсь подключиться снова, это создаст мне новое имя сеанса вместо того, чтобы автоматически подключиться к моему последнему.
Есть ли у вас идеи, как решить эту проблему?
решение1
Вот несколько вещей, которые вы можете сделать:
Вместо использования .ssh/config создайте псевдоним, который sshs и подключается к tmux. Затем вы можете выбрать, подключаться или нет из каждого терминала, когда вы подключаетесь по ssh.
Создайте два псевдонима для имени хоста (в /etc/hosts или DNS) и настройте .ssh/config для запуска tmux только в том случае, если вы подключаетесь к одному из них, но не к другому.
Сделайте так, чтобы удаленная команда подключалась к tmux только в том случае, если она еще не подключена, например, отметив
tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]
. Илиtmux display -pt$SESSION_NAME '#{session_attached}'
.