사무실에서는 프록시없이 내부 컴퓨터에 연결할 수 있지만 외부 연결을위한 프록시가 필요합니다. 사무실 밖에서는 프록시없이 다른 외부 컴퓨터에 연결할 수 있지만 내부 컴퓨터에 연결하려면 2 개의 프록시 중 하나를 사용해야합니다.
사용중인 네트워크를 자동 감지하는 방법을 알아낼 수 있다면 ssh에게 적절한 구성 파일을로드하도록 지시 할 수 있습니까?
그렇지 않다면 적절한 구성 파일을 ~ / .ssh / config에 심볼릭 링크하기 위해 쉘 스크립트를 작성하는 것보다 더 우아한 해결책이 있습니까?
편집 : @ pcm과 JonnyRo가 내 질문을 이해했다고 생각하고 그들이 제안하는 것을 시도 할 것입니다.
|--------\ Dest | abc.example.com | xyz.external.org |
| Source \---------\| | |
|--------------------+-----------------+------------------|
| example.com office | No Proxy | Proxy |
| outside | Proxy | No Proxy |
답변
프록시 구성 방법에 따라 두 상황에서 작동하는 SSH 구성 항목을 간단히 작성할 수 있습니다. 예를 들어 정기적으로 사용하는 하나의 네트워크에서 아웃 바운드 연결을하기 전에 중간 호스트로 ssh해야합니다. 기본적으로 다음과 같은 구성을 설정했습니다.
# proxy ssh
Host *%sshproxy
ProxyCommand ssh user@proxyhost.example.org /bin/netcat -w 1 $(echo %h | cut -d%% -f1) 22
Host myhost.example.org
HostName 172.16.24.1
Host otherhost.example.com
HostName 192.168.57.12
따라서 프록시를 사용할 필요가 없으면 간단히 명령을 실행하고 ssh myhost.example.org
연결할 수 있지만 프록시가 필요할 때 명령을 실행합니다 ssh myhost.example.org%sshproxy
.
%proxy
비트를 자동으로 추가하는 일종의 별칭 또는 자동 완성 설정을 설정할 수 있다고 생각합니다 .
답변
오래된 질문이지만이 스레드의 일부 아이디어가 도움이되었으며 이것이 내가 생각해 낸 해결책입니다.
먼저 프록시 서버 ssh 구성입니다.
Match Originalhost proxy Exec "ifconfig | grep 10.0.1"
Hostname 10.0.1.2
Host proxy
Hostname external.hostname.com
그런 다음 서버 B 구성 :
Match Originalhost server-b Exec "ifconfig | grep 10.0.1"
ProxyCommand none
Host server-b
Hostname 10.0.1.3
ProxyCommand ssh -W %h:%p server-a
여기서 아이디어는 기본 사례가 외부 사이트에서 연결되고 ProxyCommand가 프록시에 대한 ssh 연결을 시작한 다음 server-b에 연결한다는 것 입니다. 반면에 로컬 서브넷에 이미있는 경우 ProxyCommand가 비활성화되고 server-a에 대한 프록시 연결 이 이루어지지 않습니다.
현재 위치에 관계없이이 항목을 통해 항상 server-abc 에 연결할 수 있으며이 설정은 현재 위치를 파악하고 그에 따라 연결을 설정합니다. 들어 서버 XYZ , 그냥 같은 아이디어를 사용합니다.
나는 여기에 더 철저한 설명을했다 :
http://blog.kihltech.com/2017/04/ssh-conditional-host-address-based-on-network-or-location/
답변
-F 옵션을 사용하여 다른 구성 파일에서 선택할 수 있습니다. 두 가지 네트워크의 경우. 그런 다음 현재 사용중인 네트워크를 기반으로 다른 구성 파일을 사용하는 별명을 작성하거나 로그인 스크립트 설정에서 IP 주소를 기반으로 단일 별명을 작성할 수 있습니다.
답변
패턴에 대해 IP를 확인한 다음 적절한 쉘 스크립트를 심볼릭 링크하는 쉘 스크립트를 작성하십시오.
어떤 이유로 든 IP 범위가 가정과 직장에서 동일하면 DHCP 구성 DNS 서버가 포함 된 /etc/resolv.conf를 기반으로 전환 해보십시오.
답변
.ssh / config의 “Host”옵션을 사용하면 대상에 따라 구성을 변경할 수 있습니다. 나는 포트 포워딩을 조정하고 내가가는 곳을 기반으로합니다.
답변
과거 에이 질문을 살펴 봤으며 가능한 해결책 중 하나는 구성 파일에 해당 항목을 갖는 것입니다.
Host ENTRY_POINT
Hostname ENTRY_POINT_FQDN
User USERNAME
Host *.INSIDE_DOMAIN
ProxyCommand ssh ENTRY_POINT nc %h %p
이런 식으로 외부에 있다면 $ ssh machine.inside_domain을 할 수 있습니다. 당신이 안에 있고 dns 해결하는 경우, 당신은 $ ssh 기계 수 있습니다. 그것은 나를 위해 잘 작동합니다.
어쩌면 누군가 가이 아이디어를 개선하고 DNS 구성을 변경하여 외부에 있고 SSH 진입 점을 사용하면 machine.inside_domain을 자동으로 해결합니다.