IP 주소가 공개된 프록시를 설계하고 싶습니다. 클라이언트는 프록시의 IP 주소를 알고 있으며 SSH를 통해 연결할 수 있습니다. 그러나 클라이언트가 IP 주소를 알 수 없는 호스트가 하나 있습니다. 프록시의 목적은 클라이언트에서 SSH를 "가로채기"하고리디렉션해당 개인 호스트로 이동합니다. 아래 이미지는 이 문제를 보여줍니다.
서버 B는 내가 설계하려는 프록시입니다. 클라이언트 C는 서버 A의 IP 주소를 모릅니다. 클라이언트 C는 SSH를 통해 서버 B(프록시)에 연결할 수 있습니다. 그런 다음 프록시(서버 B)는 SSH 연결을 서버 A로 전달해야 합니다.이것답변, 다음을 시도했습니다.
서버 A에서 다음 명령을 실행합니다.
ssh userB@serverB -R clientC:1234:serverA:22
클라이언트 C에서 다음 명령을 실행합니다.
ssh userA@serverB -p 1234
그러나 클라이언트 C는 서버 A와 연결을 설정할 수 없으며 다음 메시지가 나타납니다.
ssh: connect to host server B (192.168.2.122) port 1234: Operation timed out
프록시(서버 B)를 작동시키는 방법을 알려주실 수 있나요?
해결됨:
sshd_config
내 접근 방식이 정확합니다. 서버 A와 서버 B(프록시)를 재구성 해야 합니다 .
AllowAgentForwarding yes
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
세부정보 확인 가능여기.
답변1
clientC
에서 serverB
까지 SSH를 serverB
통해 연결할 수 있나요 serverA
? 그렇다면 더 간단한 해결책이 있습니다. 에서 clientC
다음을 실행합니다.
ssh -J userB@serverB userA@serverA
이것은 먼저 ssh에 접속하고 userB@serverB
, ssh에서 자동으로 포트 전달을 설정하고 serverA
, 전달된 포트를 통해 에 연결합니다 userA@serverA
.
이것이 가능하지 않은 경우 방화벽이나 기타 네트워크 제한 사항이 방해가 되지 않는다는 가정하에 일부 수정을 통해 방법을 사용할 수 있습니다.
다음에서 실행하는 역방향 앞으로 명령을 조정해야 합니다 serverA
.
ssh userB@serverB -R "*:1234:localhost:22"
여기서 *
설정하는 것은 bind_address
역방향 포워딩 모니터링을 위한 주소입니다. SSH 매뉴얼 페이지에서:
기본적으로 서버의 TCP 수신 소켓은 루프백 인터페이스에만 바인딩됩니다. 이는 바인드 주소를 지정하여 무시할 수 있습니다. 빈 바인드 주소 또는 주소 "*"는 원격 소켓이 모든 인터페이스에서 수신 대기해야 함을 나타냅니다. 원격 바인드 주소 지정은 서버의 GatewayPorts 옵션이 활성화된 경우에만 성공합니다(sshd_config(5) 참조).
따라서 설정을 통해 bind_address
모든 인터페이스에서 연결을 수신할 수 있습니다. (으로 설정한 버전에서는 IP 주소가 의 네트워크 인터페이스를 참조하지 않기 clientC
때문에 작동하지 않습니다 .clientC
serverB
GatewayPorts clientspecified
설정 도 필요합니다 /etc/ssh/sshd_config
. 이는 ssh -R
비루프백 인터페이스에 바인딩할 수 있는 권한을 부여합니다.
그러면 다음에서 SSH를 통해 연결할 수 있습니다 clientC
.
ssh userA@serverB -p 1234
이러한 유형의 B
포트 전달은 A
빠르고 더러운 작업에 적합합니다. 좀 더 프로덕션 친화적인 것을 원한다면 SSH 전달을 사용하는 대신 HAProxy, nginx 또는 iptables/nftables와 같은 것을 사용하여 TCP 전달을 처리하는 것을 고려해 보십시오.
답변2
sshd_config
내 접근 방식이 정확합니다. 서버 A와 서버 B(프록시)를 재구성 해야 합니다 .
AllowAgentForwarding yes
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
자세한 내용은 여기에서 확인할 수 있습니다.SSH 포트 포워딩.