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
다음과 같은 몇 가지 작업을 수행할 수 있습니다.
.ssh/config를 사용하는 대신 ssh를 실행하고 tmux에 연결하는 별칭을 만듭니다. 그런 다음 SSH 접속 시 각 터미널에서 접속할지 여부를 선택할 수 있습니다.
호스트 이름에 대한 두 개의 별칭(/etc/hosts 또는 DNS)을 만들고 하나에는 연결하고 다른 하나에는 연결하지 않는 경우에만 tmux를 실행하도록 .ssh/config를 구성합니다.
예를 들어 확인하여 원격 명령이 아직 연결되지 않은 경우에만 tmux에 연결되도록 합니다
tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]
. 또는tmux display -pt$SESSION_NAME '#{session_attached}'
.