FTP-inloggning fungerar men kataloglistningen hänger sig: varför
FTP-inloggningar och mapplistningar använder två olika anslutningar. När en listning hänger sig ska du kontrollera den passiva dataadressen och portintervallet, inte lösenordet.
Användarnamnet fungerar, lösenordet fungerar och klienten säger att den är ansluten. Sedan väntar den för evigt på en mapplistning eller på den första filöverföringen, och inget i inloggningsuppgifterna förklarar det. FTP öppnar en andra anslutning för varje listning och varje fil, och det är den andra anslutningen som misslyckas. Inloggningen bevisar bara att det första samtalet fungerar.
Gör kontrollerna i ordning. Var och en utesluter ett annat lager, så stanna vid den första som ger en avvikelse.
Separera de två anslutningarna först
En styranslutning transporterar kommandon och svar på serverns lyssnande port. En dataanslutning transporterar kataloglistningen eller filens innehåll, och i passivt läge väljer servern sin slutpunkt och meddelar den i PASV- eller EPSV-svaret. Att tillåta port 21 säger ingenting om huruvida dataporten är nåbar, och det är precis därför en inloggning lyckas medan varje listning time out. WinSCP:s guide till FTP-lägen beskriver uppdelningen och dess nätverkskrav.
Om klienten sitter bakom VPN går datavägen genom samma tunnel men inte nödvändigtvis genom samma policy.
Läs adressen i PASV-svaret
Kör en utförlig klient och läs svaret i stället för att gissa. curl -v ftp://user@host/ skriver ut PASV-raden med den adress och port som servern vill ha, och det är till den adressen klienten ansluter härnäst. Om det är en privat adress som inte betyder något på klientens sida av tunneln går dataanslutningen ingenstans medan kontrollkanalen förblir frisk.
Jämför den adressen med den adress som klienten faktiskt nådde. En avvikelse är svaret, och den kommer vanligtvis från NAT eller från en server som konfigurerats med en intern adress.
Kontrollera portintervallet och tunnelns policy
Passiva servrar tilldelar dataportar från ett konfigurerat intervall, och det intervallet måste tillåtas genom VPN och eventuell brandvägg på vägen. En policy som tillåter 21 och inget annat är en endast-inloggning-policy. Bekräfta intervallet med den som driver servern och testa sedan en port från det i stället för att anta att hela intervallet beter sig likadant.
Krypterade kontrollkanaler gör detta svårare, eftersom en mellanliggande enhet inte längre kan skriva om den annonserade adressen under flykten.
Vet när EPSV eller en återgång hjälper
EPSV returnerar en port utan en separat adress, vilket tar bort felet med fel adress när båda ändarna stöder det. Vissa klienter kan också instrueras att ignorera den annonserade adressen och återanvända styranslutningens destination. Båda är legitima verktyg riktade mot en specifik topologi, inte en generell lösning.
Inaktivera inte TLS bara för att låta ett hjälpmedel granska sessionen. Det byter ut ett fungerande protokoll mot en trasig hotmodell.
Bekräfta med en listning och en överföring
När adress- eller portpolicyn har ändrats öppnar du en ny session över samma VPN-väg och listar en katalog. Överför sedan en liten fil, eftersom en listning och en överföring kan ta olika kodvägar på vissa servrar. Kontrollera klientloggen för en dataanslutning till den förväntade adressen och porten och bekräfta att byten kom fram.
Håll FTP, FTPS och SFTP åtskilda i huvudet medan du gör detta. En ändring av passiv port är ingen SFTP-inställning, och åtgärden följer inte med mellan protokoll.