.ssh/config 변수 포트가 있는 ProxyCommand

.ssh/config 변수 포트가 있는 ProxyCommand

제가 일하는 환경에서는 SSH를 통해 다양한 서버에 연결하기 위해 터널을 사용합니다. 예를 들어 "ssh -p XXXXX 사용자 이름@localhost"를 사용하여 서버에 액세스하겠습니다.

포트가 항상 동일하다면 다음과 같이 하면 됩니다.

Host somehost
  User bryan
  Hostname localhost
  Port 12345
  ProxyCommand ssh -p 2218 [email protected] -W %h:%p

그러나 터널이 종료되고 복원되면 사용되는 포트가 변경될 수 있습니다. 그것은 내가 바꿀 수 있는 힘이 있는 것이 아니라 인프라에 내장되어 있습니다. 그래서 현재 포트를 찾는 프로그램을 작성했습니다. 하지만 다음 방법을 모르겠습니다.

a) 프로그램을 실행하고 출력을 %p 변수에 적용하거나 b) first.server.com에서 cron 작업을 실행하거나, 포트가 포함된 텍스트 파일을 작성하거나, 환경 변수를 설정합니다.

사실 저는 이걸 하고 싶어요. 가능합니까?

누군가를 호스팅하다
  사용자 브라이언
  호스트 이름 로컬 호스트
  포트 `sh get_port_for_somehost.sh`
  에이전트 명령 ssh -p 2218[이메일 보호됨]-W %h:%p

지금 당장 생각할 수 있는 유일한 것은 현재 포트가 무엇인지 쿼리한 후 내 .ssh/config를 다시 작성하는 프로그램을 내 노트북에서 실행하는 것입니다. 하지만 그렇게 하고 싶지는 않습니다.

답변1

포트 번호를 추출하기 위해 구성 파일의 변수를 스크립트하는 방법은 없습니다.

bash하지만 포트를 가져와서 올바른 위치에 배치하는 함수를 작성할 수 있습니다 . 예를 들어 다음을 에 배치합니다 ~/.bashrc.

function ssh-dynamic() {
  PORT=`sh get_port_for_somehost.sh`
  exec ssh -p "$PORT" somehost "$@"
}

다른 구성은 에 남아 있을 수 있습니다 ~/.ssh/config.

관련 정보