16.03.2009
Esa Turtiainen

WinSCP is a very nice program to use in Windows computers to access remote servers. It is a very common and convenient means to access WWW hosting servers. It follows classic DOS-era Norton Commander two-pane paradigm to conveniently access files. Screenshots of the WinSCP in action are available from WinSCP site.

Linux has two main user interface systems, GNOME and KDE. They both have incumbent file management programs that support invisibly SSH servers. You can ask file manager to connect to remote server using SSH protocol and the files are then available exactly as local files.

I can very well still understand why WinSCP users are unhappy of these Linux replacements. Ubuntu users get the Nautilus file manager as default, and it is a painful copy of simple and slow Windows file management. KDE Konqueror is ... bit different and bit difficult to install in non-geek GNOME distributions like Ubuntu.

Another thing in default window managers is that remote file access is built on the application. They are not universally available from the computer. If you start your exotic but favorite text editor program on one of the remote files, it will likely fail. You are not free to select your file manager and support applications.

GNOME Commander

The best copy of WinSCP functionality you get with the latest version of GNOME Commander. It is simple and fast two-pane file manager.

image0

The left pane is connected to a SSH server my-www-server and the right pane is the local Linux computer. You can drag-and-drop files from one window to another and there are plenty of useful commands available in the right mouse button and menus.

Only the latest version supports SSH and it is using the same GnomeVFS system as the default file manager, GNOME Nautilus. This means that the remote files are not available to any other program except the file manager. GNOME Commander however is able to do the same trick as WinSCP: it downloads files so that support programs are able to handle them locally.

image1

However, it is not so smart that it could save files back automatically like WinSCP.

If you miss the newest GNOME commander (1.2.7) in your relatively new distribution (e.g. Debian Lenny, Ubuntu Hardy Heron), you can try to install it from Debian testing (version 1.2.6 or any older one does not support SSH). Install it with:

dpkg --install --force-all gnome-commander_1.2.7-1_i386.deb

KDE Krusader

KDE Krusader is an two-pane alternative to more usual KDE Konqueror file manager. It supports SSH (sftp:// and fish://) servers.

image2

Some applications support sftp:// and some applications fish:// URLs as file names. Those applications can be started directly from the file manager with URL as a file name

You can even write in the command line (gedit is GNOME "notepad" editor):

gedit sftp://me@my-www-hosting.com:22/home/www/index.html

and gedit will be able to both read and write that file directly exactly as a local file.

The problem is that only some GNOME programs support sftp:// and only some KDE programs support sftp:// or fish://. At least my GNOME system, KDE applications don't work well.

Some GNOME programs that support sftp:// URL directly are GEdit text editor and Screem XML editor.

KDE Konqueror

The standard KDE file manager Konqueror is also able to do two-pane system with some options.

image3

You have to select Window / Split View Left/Right to get two pane appearance. Konqueror uses only fish:// URLs that are directly supported by some KDE programs. Konqueror is able to download a file for an external editor and, if modified, asks if you want to upload it when editor exits. GNONE Gedit or Screem XML editor that worked directly with sftp:// URLs do not work with fish:// URLs. There is no option to use sftp:// URLs in Konqueror.

GNOME Nautilus

In Nautilus, the standard GNOME desktop and file manager, you can "mount" files of an remote SSH server. They look like local files.

Nautilus is not an two-pane file manager and it does not handle brilliantly opening remote files.

SSHFS

If you have administrator rights to the computer (root), you can "mount" remote SSH server files to local file system. For example, the command:

sshfs esa@my-www-hosting.com/home/www /mnt

makes all files in the remote server directory /home/www available as /mnt. For example, /home/www/index.html is now /mnt/index.html. All the programs are available to handle those files and they are not able to separate them of local files. You are free to use e.g. GNOME Commander to handle these files as local files.

Traditional Linux security system does not allow a normal user to mount random file systems. SSHFS uses a new addition to the Linux kernel called FUSE that allows users to make their own file systems.

It should is possible to make the same sshfs command as a normal user that belongs to group "fuse". In my system (Debian Lenny) there was some confusion whether the right the group number was 125 or 126. After fixing that, all users in group "fuse" are able to mount their own file systems. For example,

mkdir /tmp/foo
sshfs esa@my-www-hosting.com/home/www /tmp/foo
...
fusermount -u /tmp/foo

where fusermount -u is an unmount command that is available for non-root users.

Gnome is working on replacing the GnomeVFS system with GIO/gvfs that is based on FUSE. It will allow mounting SSH servers in a more general way from applications.

Products mentioned in the article

WinSCP http://winscp.net/

GNOME Commander http://www.nongnu.org/gcmd/

Krusader http://www.krusader.org/

Nautilus http://projects.gnome.org/nautilus/

FUSE http://fuse.sourceforge.net/

SSHFS http://fuse.sourceforge.net/sshfs.html/