Fugu Open Source Mac OS X Frontend for OpenSSH sftp client
Fugu is a graphical frontend for the text-based Secure File Transfer Protocol (SFTP) client that ships with Mac OS X. SFTP is similar to FTP, but the entire session is encrypted, meaning nothing, including passwords, is sent in the clear. Fugu provides a friendly, intuitive interface for OpenSSH's SFTP client, featuring secure drag-and-drop file transfers, remote file editing and remote file preview. Fugu allows you to take advantage of SFTP's strong encryption without having to sacrifice ease of use. Additionally, Fugu can make secure file transfers using Secure Copy (SCP), and can create SSH tunnels to faciliate secure interaction between machines.
How to connect to an SFTP server
Launch Fugu. In the Connect to field, enter the name of the SFTP server. Enter the user name you have on the server in the Username field. The Port field and Directory field are optional. If you know that the SFTP server is running on a non-standard port, you would enter the server's port number in the Port field. If you want to go to a directory other than the default (usually your home directory), enter the path in the Directory field. When you've filled out all the information, you may optionally add this information to your list of Favorites, by click the Add to Favorites button. After you've added a server to your Favorites list, you can select it from the pop-up button located at the bottom left-hand corner of the connection pane. Editing Favorites is done in Fugu's preference panel. When you're ready to connect, click the Connect button. If Fugu needs your password, it will ask for it.
Uploading files and folders
Drag the items you want to upload from the Local (left-hand) pane and drop them on the Remote (right-hand) pane.
Downloading files
Downloading files is just like uploading them. Drag the files you want to download from the Remote pane and drop them on the Local pane. Version 1.2.0 adds the ability to download files from the remote pane by dragging them to the Desktop or any open Finder window.
Downloading folders
The sftp client that Fugu wraps does not support folder downloads. To get around this limitation, Fugu uses SCP to download folders. When you try to download a folder, Fugu will offer to download for you with SCP. If you choose Download with SCP, Fugu brings forward the SCP window for the transfer (see the SCP section below for more).
Navigating
Double-click folders to show their contents. To move up a level, click the up arrow button located next to the pop-up button listing your current location. To move to a folder in the path of your current location, click the pop-up button, and select the desired folder from the list. Fugu also has folder histories for the Local and Remote panes, storing the last 20 places you've been. You can click the History buttons in the toolbar, and select the location to which you'd like to go. You can use the arrow keys to navigate, as well. The right arrow key enters the selected directory. The left arrow key causes Fugu to move the current directory's parent.
Deleting files and folders
To delete an item, select it, and hit the delete key on your keyboard; or select the item, and click the Delete button in the toolbar. You will be prompted to confirm that you want to remove the item. The sftp client Fugu wraps does not know how to delete folders recursively. This means that it will give you an error if you try to remove a folder that is not empty. Delete the items in the folder first, then delete the folder.
Renaming files and folders
To rename an item, select the item, and hit the Enter key on your keyboard; or right- or control-click on the item, and select Rename from the contextual menu. Fugu will select the name of the item and make it editable. When you've completed renaming the item, hit Return on your keyboard. To cancel a rename, click on another item.
Showing file or folder information
To see all the attributes of an item, whether on your computer or on the SFTP server, select the item and choose Get Info from the SFTP menu. In the info panel, you can modify file and folder permissions, set owner and group, and see other information pertaining to the selected item.
Using SCP with Fugu
Connecting to use SCP is just like connecting with Fugu to use SFTP, except that you will be asked to specify the path to the item you want to transfer. Select New Secure Copy from the SCP menu. In the SCP window, enter the name of the server. you'll be connecting to in the Remote Host field. In the User Name field, enter the user name you have on the server. If copying from your computer to the server, click the Choose... button and select the item to copy. If the remote is stored on the server, you'll need to enter the path to it in the Item to Copy field. You may also optionally enter the location you want the item transferred to in the Copy File to Path field. To indicate whether you'll be uploading or downloading the item, choose either Upload Item to Remote Host or Download Item from Remote Host from Copy Type field. When you're ready to begin copying, click the Secure Copy button, and enter your password when prompted.
Creating an SSH Tunnel with Fugu
- What you need - To create an SSH tunnel, you need an account on a machine running SSH, which will act as the tunnel host for you. If you don't have access to such a machine, you can use your Mac as the tunnel host. If this is the case, you'll
- Creating the tunnel - From the SSH menu, select New SSH Tunnel. In the Remote Host field, enter the name of the server you want to connect to via the SSH tunnel. In the Remote Port field, enter the number of the port on which the service you want to use is running. If the server you're connecting to is running FTP, the port number is generally 21. In the Local Port field, enter a number greater than 1024; it doesn't really matter which. In the Tunnel Host field, enter the name of the computer on which you've got a valid SSH account. Enter the user name you have on that server in the Username field. The Port field is optional. When you've filled out all the information, click the Start Tunnel button. When you've authenticated, a small window will be put in the upper right-hand corner of the screen, containing a pop-up button in which the tunnel information is listed.
- Using the tunnel - Once your SSH tunnel is established, you can connect through it to the server you entered in the Remote Host field. To make this connection, you do not connect to the Remote Host, but to your own computer, or "localhost." Say, for example, you're tunnelling to an FTP server. After establishing your SSH tunnel, open an FTP client, and in the Server field or its equivalent, enter "localhost". In the Port field, enter the number you put in the Local Port field of Fugu's SSH Tunnel window. In the Password field, enter the password you use for the FTP server, and connect. Your connection is redirected securely through your tunnel host to the FTP server. If you're tunnelling to an FTP storage server, as in this example, you will need to make sure that you have Passive mode enabled in your FTP client.
- Closing the tunnel - When you're done with the tunnel, simple click the Close Tunnel button. You will be prompted to confirm the closure. Click Close Tunnel.
Frequently-Asked Questions
Q: Why doesn't Fugu tell me how much of a file it has downloaded or uploaded?
A: Some versions of OpenSSH's sftp client don't provide the sort of feedback that would be necessary
for such information. Once it does, Fugu will provide you those sorts of updates. In the meantime,
Fugu lets you know that files are being downloaded or uploaded, and updates the GUI when either
operation is complete. You may also check Fugu's Console for information or errors.
OpenSSH release 3.6.1p1 does provide transfer progress feedback. Fugu 1.1 and subsequent
releases support transfer progress display if the version of OpenSSH installed on the computer is
3.6.1p1 or newer.
Q: Why can't I download folders with SFTP?
A: Fugu only wraps OpenSSH's command line sftp client. That client is incapable of uploading or
downloading directories. Fugu does add the ability to upload folders, but does not yet support
directory download or recursive remote directory deletion. Although SFTP still lacks the ability to
download directories, Fugu will prompt you when you try to download a directory, asking if you'd like
to download it with SCP instead. It's not a perfect solution, but it does provide a workaround in the
meantime.
Q: When I connect I get an error that says "server.host.edu: connection refused." Why?
A: The server isn't listenting for SSH connections on the standard port. It may not be running the SSH
service at all. Contact the system administrator for help.
Q: After I authenticate Fugu tells me "Request for subsystem sftp failed." What does that mean?
A: The server isn't configured to be used as an SFTP server. It allows SSH connections, which is why
you were able to authenticate, but when you asked the server to set up the SFTP session, the server
was either unable to find the sftp-server tool, or was deliberately configured to deny SFTP sessions.
Contact your administrator for more information.
Q: Fugu was working fine, but now when I try to upload files Fugu says "Couldn't get handle:
failure." Wha...?
A: One of the most helpful errors from OpenSSH's sftp, this message typically means that there isn't
enough space on the server's disk for more data. This could be because you've hit your quota limit,
or that the disk itself is full. Contact the server administrator for help.
Q: I'd like to contribute a localization. Whom should I contact?
A: Please e-mail fugu@umich.edu if you'd like to contribute a localization. The developers will be
more than happy to discuss this with you. There are currently translators for Chinese, Dutch, Finnish,
French, German, Italian, Polish and Spanish; the localizations are included in the international
version of Fugu 1.1.1. Because version 1.3 of Fugu is likely to involve significant modification to the
.nib files, please refrain from translating them at this time. In the meantime, we encourage
Q: I'd like to contribute a patch. How do I go about submitting it?
A: First, contact us at fugu@umich.edu, so we can discuss what you'd like to work on, and whether
anyone else is working on your favorite feature. After we've arranged everything, and you've tested
your work thoroughly, create a patch against CVS HEAD with diff -u. We should be able to apply the
patch to our source with the patch command. Ideally, the formatting of your code should match the
formatting in the Fugu source. It makes the code easier to read, and therefore easier to accept.
Q: Will there be traditional FTP support?
A: Yes. The intention is to provide an FTP option. It would (or should) be used only for anonymous
connections. In the meantime, if you must use traditional FTP, use Fugu's SSH tunnel capabilities to
create a secure connection to the server.
Q: What about FiSH?
A: File transfer over SsH, or FiSH, is sort of kludgey way of running an FTP-like session over SSH.
Unlike SFTP, which requires the sftp subsystem to be enabled, FiSH only needs an SSH connection
to work, relying on a perl script the client uploads to the server to handle FTP-like commands. I'm
currently investigating adding FiSH support to Fugu, but adding FTP support is a higher priority. If
you're interested in writing a patch for FiSH support in Fugu, please contact me.
Q: How do I use Public Key authentication with Fugu?
A: I recommend using SSH Agent (http://www.phil.uu.nl/~xges/ssh), a GUI frontend to the ssh tools
that set up the proper environment variables for such authentication. Documentation on how to
create authorized key files and public/private key pairs may be found in many places on the web.
There has been some discussion of improving Fugu's use of keys. You can also set the environment
up from the command line, and launch Fugu there. Fugu will inherit the environment variables of the
terminal session.
Version History
- 1.2.0 (2 May 2005):
- new: promised file drags (drag and drop to Finder from remote pane)
- new: additional external editors
- update: additional FAQ content
- fix: search paths for alternative OpenSSH installations return valid paths
- 1.1.3 (22 Apr 2005):
- new: support for Mac OS X 10.4 Tiger
- new: search path support for alternative ssh binaries (Eric Knauel and Thomas Rasch)
- fix: build number is stored in Info.plist, not hard-coded
- fix: corrected handling of * in filenames when parsing server output
- 1.1.2 (21 Feb 2005):
- new: scp image well accepts drops
- new: scp local path field accepts drops (Mark Fleming)
- new: sftp filetype in info window is obtained via LaunchServices
- new: project upgraded from ProjectBuilder to Xcode native
- fix: sftp properly nul-terminates raw byte strings in download path
- fix: sftp browser re-caches icons if directory is modified
- fix: sftp CLI external editing handles spaces in pathnames
- fix: eliminated crash when uploading an externally edited file and Fugu is hidden
- 1.1.2rc1 (3 Jan 2005):
- Real local icon display.
- Icon caching system improvements.
- Fix for changing filenames that truncated with an ellipsis.
- Errors display properly when they occur during upload or download.
- 1.1.1 (13 Dec 2004):
- Added advanced options settings to Favorites.
- Overwrite behaviour is more consistent.
- Overwrite prompts can be disabled with hidden default
- 1.1.1rc2 (6 Dec 2004):
- Fix for hanging connections.
- Improved ssh version detection.
- Fix for handling raw byte directory names.
- Warning message if we try to run SSH.com's sftp (unsupported).
- Somewhat improved searching for supported external editors.
- Minor improvements to unknown host key parsing.
- 1.1.1rc1 (30 Nov 2004):
- Much improved handling of unknown character encodings.
- Improved method of locating valid External Editors.
- Support for TextMate as an External Editor.
- Support for vi and emacs as External Editors.
- Fix for date sorting.
- Much cleaner backend code (a continuing effort).
- Experimental spring-loaded folder support.
- Improved update checking.
- Filename abbreviation with ellipsis, like the Finder.
- 1.1 (24 Oct 2003):
- Fix for continuous beeping occurring when transferring files and window is minimized.
- Sort items by name if size, date, owner, group or permissions are the same.
- Fix: added columns appeared in English even if Fugu was running in another language.
- Fixed a crash caused by corrupted autosaved NSTableViews.
- Fix for endless progress bar spinning when refreshing directory listings.
- Restored local port field to SSH Tunnel window.
- Prefs loaded more reliably.
- Some toolbar image tweaks.
- International version has localizations in Dutch, Finnish, French, German, and Spanish.
- 1.1 beta 2 (26 Sep 2003):
- Clicking on column headers now sorts column contents.
- Added PageSpinner as a supported external editor.
- Added support for OpenSSH 3.7.1p2. (3.7p1 and 3.7.1p1 contain a bug that prevent Fugu from working properly.)
- Significant improvements to the backend.
- Fix for SSH Tunnel window not updating following successful authentication.
- Fix for preference panel disappearing.
- External Editor support (BBEdit, BBEdit Lite, SubEthaEdit, TextWrangler).
- Image previews.
- Customizable information display in file browsers.
- New toolbar icons.
- Support for OpenSSH 3.6 (transfer progress feedback)
- Revised information panel.
- Added ability to use compression, force SSH1 connections, and take additional ssh command line options.
- Improved type-ahead find, behaving more like the Finder.
- Added ability to rename files and folders.
- Fixed issue in which no files or folders would be displayed when connecting to a VShell server's root
- Keychain support.
- Support for connections to Windows machines running VShell.
- German localization by Thomas Fuchs.
- Basic type-ahead find implementation.
- Fix for hang occurring when Fugu encounters filenames containing characters that do not conform to UTF-8. (Recognizing and properly handling all character sets is in progress.)
- Support for non-ASCII characters in filenames, including Chinese and Japanese glyphs.
- Favorites can now store username, server name, port, and directory.
- Fugu now always prompts when user asks to delete or to overwrite something.
- Fixed directory upload bug causing nested files and folders to appear at the top level of the uploaded directory.
- Fixed memory leak that occurred during directory upload.
- Added SCP support and SCP system service: you can now select a file in the Finder and choose Fugu > Secure Copy... from the
- Added support for Public Key authentication and S/Key passwords.
- Added support for connections to ssh servers listening on ports other than the default (22).
- Fixed problem moving to a directory from the popup list when a path element contained a space.
- Fixed Add To Favorites button: only enables when there is text in the hostname field.
Source: Fugu homepage