Автоматическое подключение к tmux или screen во время ssh-подключения и как задать уникальное SESSION_NAME

Автоматическое подключение к tmux или screen во время ssh-подключения и как задать уникальное SESSION_NAME

Я хочу использовать 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

Вот несколько вещей, которые вы можете сделать:

  1. Вместо использования .ssh/config создайте псевдоним, который sshs и подключается к tmux. Затем вы можете выбрать, подключаться или нет из каждого терминала, когда вы подключаетесь по ssh.

  2. Создайте два псевдонима для имени хоста (в /etc/hosts или DNS) и настройте .ssh/config для запуска tmux только в том случае, если вы подключаетесь к одному из них, но не к другому.

  3. Сделайте так, чтобы удаленная команда подключалась к tmux только в том случае, если она еще не подключена, например, отметив tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]. Или tmux display -pt$SESSION_NAME '#{session_attached}'.

Связанный контент