프록시 시스템을 통해 SSH 연결을 가로채서 다른(원격) 시스템으로 전달합니다.

프록시 시스템을 통해 SSH 연결을 가로채서 다른(원격) 시스템으로 전달합니다.

IP 주소가 공개된 프록시를 설계하고 싶습니다. 클라이언트는 프록시의 IP 주소를 알고 있으며 SSH를 통해 연결할 수 있습니다. 그러나 클라이언트가 IP 주소를 알 수 없는 호스트가 하나 있습니다. 프록시의 목적은 클라이언트에서 SSH를 "가로채기"하고리디렉션해당 개인 호스트로 이동합니다. 아래 이미지는 이 문제를 보여줍니다.

여기에 이미지 설명을 입력하세요.

서버 B는 내가 설계하려는 프록시입니다. 클라이언트 C는 서버 A의 IP 주소를 모릅니다. 클라이언트 C는 SSH를 통해 서버 B(프록시)에 연결할 수 있습니다. 그런 다음 프록시(서버 B)는 SSH 연결을 서버 A로 전달해야 합니다.이것답변, 다음을 시도했습니다.

  1. 서버 A에서 다음 명령을 실행합니다.

    ssh userB@serverB -R clientC:1234:serverA:22

  2. 클라이언트 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때문에 작동하지 않습니다 .clientCserverB

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 포트 포워딩.

관련 정보