FTP 로그인은 되는데 폴더 목록이 멈추는 이유
FTP 로그인과 폴더 목록은 서로 다른 두 연결을 사용합니다. 목록이 멈출 때는 비밀번호가 아니라 패시브 데이터 주소와 포트 범위를 확인하세요.
사용자 이름은 되고 비밀번호도 되며 클라이언트는 연결되었다고 표시합니다. 그런데 폴더 목록이나 첫 파일 전송에서 영원히 기다리고, 자격 증명 안에는 그것을 설명하는 것이 없습니다. FTP는 목록마다 파일마다 두 번째 연결을 열으며, 실패하는 것은 바로 이 두 번째 연결입니다. 로그인은 첫 대화가 된다는 것만 증명합니다.
점검은 순서대로 하세요. 각 점검은 서로 다른 계층을 배제하므로, 이상이 나타나는 첫 단계에서 멈추면 됩니다.
먼저 두 연결을 분리하세요
제어 연결은 서버의 수신 포트에서 명령과 응답을 나릅니다. 데이터 연결은 디렉토리 목록이나 파일 본문을 나르며, 패시브 모드에서는 서버가 자기 끝점을 골라 PASV 또는 EPSV 응답으로 알립니다. 포트 21을 허용해도 데이터 포트에 닿을 수 있는지는 알 수 없고, 로그인만 성공하고 모든 목록이 시간 초과되는 이유가 바로 여기 있습니다. WinSCP의 FTP 모드 안내서 가 이 분리와 네트워크 요구 사항을 설명합니다.
클라이언트가 VPN 뒤에 있으면 데이터 경로는 같은 터널을 지나지만 반드시 같은 정책을 지나지는 않습니다.
PASV 응답의 주소를 읽으세요
자세한 클라이언트를 실행하고 추촡하지 말고 응답을 읽으세요.curl -v ftp://user@host/ 서버가 원하는 주소와 포트를 담은 PASV 줄을 출력하고, 클라이언트는 다음에 그 주소로 접속합니다. 터널의 클라이언트 쪽에서 의미가 없는 사설 주소라면 제어 채널이 건강한 채로 데이터 연결만 아무 데도 가지 못합니다.
그 주소를 클라이언트가 실제로 도달한 주소와 비교하세요. 불일치가 답이며, 보통 NAT나 내부 주소로 설정된 서버에서 비롯됩니다.
포트 범위와 터널 정책을 확인하세요
패시브 서버는 설정된 범위에서 데이터 포트를 할당하며, 그 범위는 VPN과 경로상의 모든 방화벽을 통해 허용되어야 합니다. 21만 허용하는 정책은 로그인 전용 정책입니다. 서버를 운영하는 사람과 범위를 확인한 다음, 범위 전체가 같게 동작한다고 가정하지 말고 그중 한 포트를 시험하세요.
암호화된 제어 채널은 중간 장치가 알려진 주소를 전송 중에 다시 쓸 수 없게 하므로 이를 더 어렵게 만듭니다.
EPSV나 대체 수단이 도움이 되는 때를 아세요
EPSV는 별도 주소 없이 포트만 돌려주므로, 양쪽이 지원하면 잘못된 주소로 인한 실패를 없앨 수 있습니다. 일부 클라이언트에는 알려진 주소를 무시하고 제어 연결의 목적지를 재사용하도록 지시할 수 있습니다. 둘 다 특정 토폴로지를 겨냥한 정당한 수단이며 만능 수정은 아닙니다.
보조 도구가 세션을 검사하게 하려고 TLS를 끄지 마세요. 동작하는 프로토콜을 깨진 위협 모델과 맞바꾸는 일입니다.
목록과 전송으로 확인하세요
주소나 포트 정책을 바꾼 뒤 같은 VPN 경로로 새 세션을 열고 디렉터리를 나열하세요. 서버에 따라 목록과 전송이 다른 코드 경로를 탈 수 있으므로, 이어서 작은 파일을 전송하세요. 클라이언트 로그에서 예상한 주소와 포트로 가는 데이터 연결을 확인하고 바이트가 도착했는지 확인하세요.
이 작업을 하는 동안 FTP와 FTPS와 SFTP를 머릿속에서 분리해 두세요. 패시브 포트 변경은 SFTP 설정이 아니며, 수정은 프로토콜을 넘어가지 않습니다.