I spent some time today tracking down an answer for a client, and figured it might do to write up what I found. The client was clicking an FTP link in Safari, and getting access denied errors. Here’s what I found.
- Safari, unlike IE for Windows (which is what the client is accustomed to) does not contain a built-in FTP client.
- The Finder does handle FTP connections, so Safari attempts to to pass off the request to the Finder. Usually. In my testing, this handoff is not reliable. I tried three times in five minutes, and it failed twice, simply dying without further notification.
- When the Finder does grab the request successfully, it will attempt an anonymous connection. If the target server is so configured, it may reject this attempt out of hand, or it may kick back a credentials request. YMMV. You may elect to pass your credentials in the URL, viz: ftp://username:firstname.lastname@example.org. I do not recommend doing this unless you really don’t care who knows your username and password.
- If, after all this rigamarole, the Finder does manage to mount the target server, it’s a read-only connection. Forget file uploads, secure FTP, resumable downloads, etc.
For all these reasons, I highly recommend using something other than the Finder or Safari.
CLI jockeys, or those who aspire to be, will appreciate the built-in, Terminal-accessible ftp and sftp clients. Unless you’re a bona fide CLI expert, a spin through those linked man pages is highly recommended. For mere mortals, there’s a array of graphical FTP clients out there. A quick search of VersionTracker, for instance, turns up 39 results.
Personally, I use and recommend Cyberduck. In spite of the funny name, it has a strong feature set, a relatively uncomplicated interface, and it’s free. Additionally, the most recent versions will modify Leopard’s LaunchServices plist to take control of all FTP and sFTP links, shortcuts, files, and so on. This means, for instance, that a user clicking an FTP link in Entourage will be routed to Cyberduck, rather than Safari (or Camino, or whatever).