중앙 서버의 여러 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를 전달하는 스크립트를 설정하는 것입니다. 나는 많은 상황에서 그것을 사용합니다.