요새 호스트에서 화면 또는 TMUX를 사용하는 ssh-agent 키 시간 초과


8

일반적으로 ssh-agent가 실행 중이며 내 요새 호스트로 ssh 한 다음 tmux 세션을 열고이를 통해 다른 상자에 연결합니다. 키 전달은 해당 시점부터 열린 모든 세션에서 작동합니다.

터미널을 닫고 랩톱을 잠자기 한 후 tmux 세션을 다시 시작해도 요새 세션의 키 전달은 세션의 전달과 마찬가지로 계속 작동 합니다. 그러나 기존 기능은 작동하지 않습니다.

bashux에 tmux를 재개 할 때 키 전달이 계속 작동하는 작은 것이 있지만 tmux에서 세션을 계속 작동시키는 방법을 알아내는 데 어려움이 있습니다.

예를 들어 bastion01, dbhost01, dbhost02, webhost01 및 webhost02가 있습니다.

bastion01에 대한 연결을 열면 거기서 tmux를 시작한 다음 dbhost01에 연결하고 webhost01 전달 작업을 수행하십시오. 해당 연결을 닫고 기존 tmux 세션을 다시 연결하고 연결 한 다음 dbhost02 및 webhost02에 연결을 추가하면 키 전달이 02 상자에서 작동하지만 01에서는 작동하지 않습니다.

도와주세요!

답변:


11

에 ssh 할 때마다 bastion01키 전달을 처리하기 위해 다른 소켓이 열립니다. 환경 변수에서 파일 이름을 볼 수 있습니다 SSH_AUTH_SOCK. 시작하면 tmux해당 환경 변수의 값이 해당 tmux글로벌 변수에 포함되며 해당 환경 변수는 해당 세션에서 시작된 모든 쉘에 의해 상속됩니다.

이제 bastion01나중에 다시 연결할 때 새로운 ssh 세션이므로 키 전달을 처리하기 위해 다른 소켓이 할당됩니다. 세션에 SSH_AUTH_SOCK다시 연결하기 전과 후에 의 값을 검사하여이를 확인할 수 있습니다 tmux. 직장 내부에 키 전달 위해서는 tmux, 당신은의 값을 업데이트 할 필요가 SSH_AUTH_SOCK내부 tmux현재 SSH 세션에 의해 사용되는 소켓의 이름을.

이 작업을 수행하는 빠르고 더러운 방법은이 새로운 값을 파일에 저장하는 간단한 스크립트를 작성하고 원하는 tmux창에서 실행하는 것 ssh입니다.

#!/bin/bash

echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > ~/.auth_ssh

ssh를 시작하자마자 bastion01tmux 세션에 다시 연결하기 전에 해당 스크립트를 실행 하십시오. 그런 다음 inside 어디에서나 ssh를 시도하기 전에 tmux다음을 실행하십시오.

source ~/.auth_ssh

tmux창에는 고유 한 환경이 있으므로 ssh를 실행하려는 각 창에서이를 실행해야합니다. 간단하게하기 위해 ssh의 별명을 지정하면됩니다.

alias ssh="source ~/.auth_ssh; ssh"

참고 : 이것은 SSH 인증 정보를 업데이트하기 위해 직장에서 사용하는 스크립트를 지나치게 단순화 한 것입니다. 그것이 제대로 작동하지 않으면 적어도 이것이 더 나은 솔루션을 Google에 제공하기에 충분한 정보를 제공하기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.