SSH 연결 중 tmux 또는 화면에 자동 연결 및 고유한 SESSION_NAME 설정 방법

SSH 연결 중 tmux 또는 화면에 자동 연결 및 고유한 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에 연결되도록 합니다 tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]. 또는 tmux display -pt$SESSION_NAME '#{session_attached}'.

관련 정보