SSH 연결 중에 tmux 또는 screen에 자동으로 연결하고 고유한 SESSION_NAME을 설정하는 방법

SSH 연결 중에 tmux 또는 screen에 자동으로 연결하고 고유한 SESSION_NAME을 설정하는 방법

SSH 후에 자동으로 tmux나 screen을 사용하고 싶습니다. .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를 사용하는 대신 SSH 별칭을 만들어 tmux에 연결하세요. 그런 다음 SSH 연결 시 각 터미널에서 연결할지 여부를 선택할 수 있습니다.

  2. 호스트 이름에 대한 두 개의 별칭(/etc/hosts 또는 DNS)을 만들고 하나에 연결되고 다른 하나에는 연결되지 않을 때만 tmux를 실행하도록 .ssh/config를 구성합니다.

  3. 원격 명령이 아직 연결되지 않은 경우에만 tmux에 연결되도록 합니다(예: check tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]또는 ) tmux display -pt$SESSION_NAME '#{session_attached}'.

관련 정보