SSH 터널링의 개념을 이해하지 못하는 것 같습니다. 제가 현재 처한 상황은 다음과 같습니다.
- 섬기는 사람ㅏ, ssh를 통해 액세스할 수 있으며, 그 안에 mysql db를 통해 액세스할 수 있습니다
localhost:3306
. - 섬기는 사람두번째, SSH를 통해 액세스할 수 있습니다.ㅏ.
- MySQL 인스턴스씨접근 가능두번째. 서버 자체에는 액세스할 수 없고 데이터베이스 서버에만 액세스할 수 있으므로 어디서든 ssh를 사용할 수 없습니다.씨. 모든 포트에만 연결할 수 있습니다.두번째.
내 목표는 MySQL 복제입니다ㅏ도착하다씨, 여기서 A는 마스터 장치이고,씨- 노예. 에서 연결하고 싶다면 어떻게 해야 합니까?씨도착하다ㅏ. 나는 그것이 다음과 같다고 상상한다.
C ─────────B:B_PORT────────> B
│││
|/─────tnl A:22────┘││
A_db <────localhost:3306─────┘│
|\─────tnl A:22──────┘
지금까지 나는 이것을 실행해 보았습니다.두번째 sudo ssh -L B_PORT:localhost:3306 A_user@A_ip -f -N
그런데 아직 접근이 안되는 것 같아요ㅏ~에서씨, 연결 시B_포트.
편집: ssh -L B_PORT:localhost:3306 A_user@A_ip -f -N -g
@larsks가 제안한 대로 시도했지만 효과가 없었습니다. 그의 설명에 따르면 네트워크에 문제가 있을 수 있다고 믿게 되었습니다.
나의 지금까지의 여행
- 다음 위치에 터널 생성두번째그리고
ssh -L B_PORT:localhost:3306 A_user@A_ip -f -N -g
- 연결하다씨도착하다두번째.
- 네트워크 통계가 활성화되었습니다.두번째여러 SYN_RECV 연결 표시씨도착하다두번째
- 내가 연결하려고 하면B_포트~에서두번째알겠어요
packet_write_wait: Connection to A port 22: Broken pipe
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
- SSH 연결이 끊어졌습니다두번째터널을 다시 열어야 합니다
- 보안 그룹 및 기타 네트워크 규칙을 사용해 보세요. 네트워크 인바운드 및 아웃바운드 활성화씨모든 것이 정상입니다!
답변1
-g
SSH 명령줄에 옵션을 추가 해야 합니다 .
-g Allows remote hosts to connect to local forwarded ports.
If used on a multiplexed connection, then this option
must be specified on the master process.
B
그러면 에서 이러한 연결이 이루어질 수 있도록 호스트에 전달된 포트가 노출됩니다 C
. 이는 방화벽 구성이 B
이러한 연결을 허용한다고 가정합니다.
이 옵션은 로컬 포트에 사용되는 로컬 바인딩 주소를 변경합니다 -g
. ssh
그렇지 않은 경우 -g
결과 -L 8000:localhost:8000
는 다음과 같습니다.
$ netstat -tln | grep 8000
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
tcp6 0 0 ::1:8000 :::* LISTEN
보시다시피, 이 경우 두 소켓 모두 루프백 주소( 127.0.0.1
ipv4 및 ::1
ipv6의 경우)에 바인딩됩니다.
이를 통해 -g
우리는 다음을 얻습니다.
$ netstat -tln | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN
tcp6 0 0 :::8000 :::* LISTEN
ssh
이 경우 루프백 주소 대신 와일드카드 주소에 대한 바인딩이 이루어졌음 을 확인할 수 있습니다 .
답변2
왜 sudo
? sudo
그것이 모든 문제에 대한 답은 아니며, 종종 그것이 이유이기도 합니다.
나는 이것이 당신이 원하는 것이라고 생각합니다.
ssh -L local_port:remote_ip:remote_port jump_user@jump_ip
ssh -L C_PORT:A_ip:3306 B_user@B_ip -f -N
- 원격은 점프의 관점에서 보입니다.
- 현지인의 관점에서 본 점프