sshd가 특정 인터페이스를 청취하게하십시오


15

내 컴퓨터에서 tun0 인터페이스를 사용하는 OpenVPN을 사용하고 있습니다. sshd가이 인터페이스에서만 수신하기를 원합니다.

알고있는 IP 주소를 지정할 수 있습니다.

/etc/ssh/sshd_config

ListenAddress 0.0.0.0

지령. 그러나 내 IP 주소가 변경되므로 항상 유효한 IP를 선택할 수 없습니다. VPN이 작동 중일 때만 데몬을 시작할 수 있다는 것을 알고 있습니다. 그것은 문제가 아닙니다.

sshd가 특정 인터페이스 (tun0)에서만 수신하도록하려면 어떻게해야합니까?


2
포트가 아닌 다른 포트에서 포트 22의 방화벽을 차단 tun0합니까?
NickW

답변:


7

sshd는 IP 주소 만 이해하므로 직접 그렇게 할 수는 없습니다. openvpn up 스크립트를 사용하여 함께 무언가를 노크 할 수 있습니다

-up cmd Shell 명령은 TUN / TAP 장치가 성공적으로 열린 후 실행됩니다 (사전-사용자 UID 변경) up 스크립트는 VPN 연결의 다른 쪽 끝에있는 개인 서브넷으로 향하는 IP 트래픽을 터널로 라우팅하는 경로 명령을 지정하는 데 유용합니다 ...

--down스크립트 보안 등을 자세히 설명하는 정리 옵션 및 설명서의 관련 부분 도 참조하십시오 .

tun 디바이스의 IP 주소가 환경 변수로 스크립트에 전달됩니다. 또한 sshd는 양식의 명령 행에서 옵션을 사용합니다.

-oSomeOption=SomeValue

-o option 구성 파일에 사용 된 형식으로 옵션을 제공하는 데 사용할 수 있습니다. 별도의 명령 줄 플래그가없는 옵션을 지정하는 데 유용합니다. 옵션 및 해당 값에 대한 자세한 내용은 sshd_config (5)를 참조하십시오.

그래서 당신은 사용할 수 있습니다

-o ListenAddress=<some address>

아마도 VPS와 통신하는 대역 외 방법이 있으므로 이것이 중단되면 서버에 연결할 수 있습니다.


1
시도 :-o ListenAddress=$(ip addr | awk '/inet/ && /tun0/{sub(/\/.*$/,"",$2); print $2}')
pjz

@ pjz 나는 장치의 IP 주소가 up 스크립트에 대한 환경 변수로 사용 가능하다는 것을 확신하므로 그렇게 할 필요가 없다고 생각합니다. 테스트 할 물건이 없습니다.
user9517

1
우수한! IP는 ifconfig_local = 10.xx.xx.xx와 같이 up 스크립트에 전달됩니다. 다른 많은 데이터 (dev_type = tun, common_name = myservername, ifconfig_remote, route_gateway_1, untrusted_ip, ifconfig_local, proto_1, tls_serial_1, tls_serial_0 ...)가 전달됩니다.
Philipp

네, 알아요. 이제 당신도 :)
user9517

3
답을 편집하고 관련 env 변수 이름을 추가하고 싶습니까? (미래 독자들을 위해)
Philipp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.