[server] .ssh / config에서 여러 호스트 이름 / 포트 조합을 지정하는 방법

중앙 서버의 여러 Mercurial 리포지토리에서 당기고 밀어내는 여러 개의 노트북과 워크 스테이션이 있습니다. 나는 일반적으로 .ssh/config별칭을 설정하는 데 사용 합니다 :

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156

… 그리고 더 많은 옵션이 있습니다. 그런 다음 hg push ssh://repo-server//hgroot/someproject모든 로컬 리포지토리에서 간단하게 작업을 수행 할 수 있으며 서버 주소와 포트를 한 곳에서 변경할 수 있습니다.

워크 스테이션의 경우 잘 작동하지만 노트북은 다른 주소와 다른 포트를 사용하여 네트워크 내부 또는 외부에서 서버에 액세스 할 수 있습니다. SSH가 자동으로 순서대로 시도하도록 여러 HostName / Port 조합을 지정할 수있는 방법이 있습니까? 이런 식으로 사용자는 정확한 주소를 신경 쓰지 않고 밀고 당길 수 있습니다.

(물론 VPN을 사용하는 것이 가장 올바른 솔루션입니다)



답변

SSH로는 불가능합니다.

ProxyCommand노트북 연결 방법 / 위치에 따라 ssh 옵션과 함께 netcat을 사용하여 서버에 TCP 연결을 생성하는 사용자 지정 스크립트와 함께이 문제를 해결할 수 있습니다 . 다음과 같은 내용이 있습니다.

#!/bin/bash
SSID=$(/sbin/iwgetid wlan0 -r)

case "$SSID" in
net1)
  nc <host1> <port1>
  ;;
net2)
  nc <host2> <port2>
  ;;
*)
  nc <host3> <port3>
  ;;
esac

그런 .ssh/config다음에 다음이 필요합니다.

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script


답변

또 다른 대안은“오른쪽”ip의 ssh 포트 22를 랩톱의 사용되지 않는 로컬 포트로 전달한 다음 ssh를 전달하는 스크립트를 설정하는 것입니다. 나는 많은 상황에서 그것을 사용합니다.


답변