jEdit FTP plugin user's guide

Version 1.1 (April 9 2014)

Slava Pestov

Nicholas O'Leary

Voituk Vadim

Alan Ezust

Legal Notice

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no "Invariant Sections", "Front-Cover Texts" or "Back-Cover Texts", each as defined in the license. A copy of the license can be found in the file COPYING.DOC.txt included with jEdit.

Table of Contents

Included Libraries

Support for sftp/ssh and compression are provided by the included JSch and JZlib libraries, licensed under a BSD style license.

The FTP protocol is provided by a version of FtpClient (Chris, modified with added support for proxies and Mac OS/X.

Chapter 1.  Saving Passwords

First, if you have an old password file (from FTP 1.0.3 or earlier), it is no longer supported, and you need to delete it. To force jEdit to forget all all saved passwords while it is running, use the Forget Remote Passwords command in the Plugins>FTP menu.

Passwords and passphrases are always remembered while jEdit is running so you don't have to re-type them. Optionally, you can securely Save passwords and passphrases to disk by checking this option from Plugin Options - FTP. When this option is checked, the user is asked once each time jEdit is started for a master password, for reading an existing password file, or encrypting a new password file.

If you cancel entering a master password for any reason, then saving passwords is disabled until you check it again.

If you want to Use a keyfile for encrypting passwords, you can check this option, and choose a location to store the key file. With this option enabled, you will be asked for a master password only once, it is hashed and saved to this location, and even after restarting jEdit, your passwords are automatically loaded and stored without asking the user for a master password again. This is less secure than entering a master password once per jEdit startup, but provides convenience similar to previous versions of this plugin.

When available, the FTP plugin uses AES-256 encryption to save passwords. If JCE Unlimited Strength Encryption is not available, FTP plugin will step down to DES (weak) encryption. In this case, you will see a warning in the activity log indicating that FTP plugin is falling back on weak encryption. If you don't like this, you can Disable weak encryption when saving passwords from FTP plugin options, and/or install JCE Strong Encryption into your JRE. For more info, see this article.

Chapter 2. Connecting to FTP servers

Table of Contents

The FTP plugin lets you browse directories and edit files on remote servers using FTP, the File Transfer Protocol. Note that FTP is insecure since it sends everything (including passwords) as clear-text over the network. If you can, consider using SFTP, documented in the next section.

To connect to an FTP server, either select Connect to FTP Server from the file system browser's Plugins menu, or use the Open from FTP Server and Save to FTP Server commands in the Plugins>FTP menu.

File permissions

Since an FTP server does not allow execution of arbitrary shell commands, the plugin sends the "SITE CHMOD" FTP command to set a file's mode. This command is reasonably standard, but not all FTP servers support it.

If you notice that file permissions are not preserved after saving a file to an FTP server, check Utilities > Troubleshooting>Activity Log for messages like the following, which indicate your FTP server does not support this command:

[debug] FtpClient: Thread[jEdit I/O #3,4,jEdit I/O]: sending command: SITE CHMOD 644 /home/swenv
[debug] FtpClient: Thread[jEdit I/O #3,4,jEdit I/O]: received response: 502 SITE command not implemented.

A workaround is to disable two-stage save in the General pane of the Utilities>Global Options dialog box.

Chapter 3. Connecting to SFTP servers

The FTP plugin also supports the SSH File Transfer Protocol, or SFTP. SFTP is much more secure than FTP because it encrypts all network traffic.

To connect to an SFTP server, either select Connect to Secure FTP Server from the file system browser's Plugins menu, or use the Open from Secure FTP Server and Save to Secure FTP Server commands in the Plugins>FTP menu.

It is possble to use the ssh protocol to execute arbitrary commands on the remote host. Install SshConsole and read its plugin documentation for more details.

Chapter 4. Miscellaneous features

The FTP plugin includes a number of time-saving and performance-improving features:

  • URLs of the form (s)ftp://user@host/path can be pasted directly in a (docked) File System Browser, allowing you to browse remote file systems more easily. In addition, these paths can be bookmarked just as easily as local paths.

  • FTP and SFTP connections are kept open for 2 minutes before being closed. Performing another operation while a connection is still open resets the 2 minute timer. This improves performance by reducing network traffic.

  • Remote directory listings are cached. Changing files from within jEdit will automatically update the cache as necessary. However, if changes are made from another program, you will need to clear the cache manually using the Clear Remote Directory Cache command in the Plugins>FTP menu.

  • You can disable or Enable compression over SFTP connections by checking this option from Plugin Options - FTP.

Chapter 5. Troubleshooting
  • If a connection fails for any reason (auth fail, or timeout), it is not nice to pop up dialogs to show each error, especially since the requests made by the VFS can come in rapid succession and great quantities. With previous versions of FTP, this could lead to "dialog-death", where it is impossible to do anything because dialogs pop up as soon as others are closed. Now, FTP logs its errors to the activity log instead. If you are expecting something to happen and it is not, check the Errors status bar widget, or the Activity Log dockable to find out what happened.

  • The Plugin Option MaxAuthTries is a tweak which tells the SFTP protocol to retry that number of times before giving up with an "Auth Fail". In Versions prior to 1.0.3, the value was 6, which meant that with incorrect passwords, 6 bad password attempts would be made, often causing accidental lockout from the server. In FTP 1.0.7, the value was changed to 1, which caused Auth Fail problems on other systems, using keys and not even passwords. It is for this reason that the value is now configrable via this new plugin option. Hopefully most people will not need to change this value but it is there if you need it.

  • If for some reason the FTP plugin is in a non-working state and you are unable to do anything, you can reset the plugin by invoking the Plugins - Ftp - Reset FTP Plugin, which is similar to reloading the plugin - all connections are closed, all cached directories are cleared, and all passwords in memory are forgotten. The saved passwords file is not touched by this action.

  • Problems were reported when connecting to ftp servers from Windows 7. Probably there is a bug in Windows firewall. There are workarounds for that, see our bug tracker entry #3491410,

Appendix A. Change log
  • Version 1.1 by Alan Ezust Requires Java 1.6, CommonControls 1.5, and jEdit 4.5.

    • Updated to jsch-0.1.51.jar

    • Plugin-bug #1776 Fixed: Removed possible duplicate password dialogs on startup.

    • Now properly hides SplashScreen before popping up password dialogs.

  • Version 1.0.8 by Alan Ezust Requires Java 1.6, CommonControls 1.5, and jEdit 4.5.

    • Fix #3615207 SFTP Can't sort by date (Patch# 3615214, by Yihua Zhang)

    • Fix #1773, Undo a regression introduced in 1.0.5, where ftp.keys properties were cleared out at the wrong time. Also, cleared out all ftp.keys.* properties when user Forgets remote passwords or Resets ftp plugin.

    • Made SFTP MaxAuthTries a new plugin option.

    • jzlib updated to version 1.1.2 and separated into jzlib.jar.

  • Version 1.0.7 By Alan Ezust Requires Java 1.6, CommonControls 1.5, and jEdit 4.5.

    • New action: Reset FTP Plugin

    • Fix #3615141, InvalidKeyException, and fallback to DES when strong encryption is unavailable. Also, a new plugin option to disable this behavior.

    • Fix #3615163: No longer repeatedly asking for master password after the user hits "cancel".

    • Patch #3615165: Fix accidental SSH account lockout on bad passwd by changing SFTP MaxAuthTries from 6 (the previous default) to 1. (Camilo J. Diaz Repka)

  • Version 1.0.6 By Alan Ezust Requires Java 1.6, CommonControls, and jEdit 4.5.

    • Fix #3378762 SFTP VFS does not provide lastmodified dates

    • Better master password dialog, exception handling and error messages.

  • Version 1.0.5 By Alan Ezust Requires Java 1.6, CommonControls, and jEdit 4.5.

    • #3601720: Updated to use jsch 0.1.50.

    • #2211433: Using AES256 to encrypt saved passwords and passphrases with a master password. There is no way to read old saved passwords files.

    • #2761999: New plugin option to use keyfile instead of a master password.

    • #3536103, #3615037, 3603120: Log errors, don't pop up dialogs.

    • New plugin option to enable compression over sftp connections.

  • Version 1.0.3 by Alan Ezust Requires Java 1.6+ and jEdit 4.5

    • Fix #2873889: Hypersearch over SFTP leaks connections.

  • Version 1.0.2 by Alan Ezust Requires Java 1.6+ and jEdit 4.5

    • #3575850 Properly cache login info for SshConsole

    • Updates for jEdit 5.0 API

  • Version 1.0.0 by jarekczek and voituk Requires Java 1.6+ and jEdit 4.5.0

    • Re-ask for connection details if no key-file exists

    • Fixed problem with authentication on some sFTP servers (promptKeyboardInteractive method impelented)

    • Added troubleshooting section in user's guide, to point to possible workaround for the Windows 7 firewall bug.

    • #1969573: Added local file backup (pre-alpha version) for jEdit up to 4.5.x. Newer jEdit does it itself.

  • Version 0.9.7 by Vadim Voituk Requires Java 1.5+ and jEdit 4.3pre17+.

    • New improved FTP URL parser: Fixed bugs #2893214, #2768807, #2334496, #1953257, #899119

    • jsch lib updated to version 0.1.42

  • Version 0.9.6 Requires Java 1.5+ and jEdit 4.3pre17+.

    • jEdit 4.3pre17 compatibility improvements

    • jsch lib updated to version 0.1.41

  • Version 0.9.5 Requires java 1.5 and jEdit 4.3pre12.

    • Fixed: Empty Passwords Disallowed (# 1802173 - Vadim Voituk)

    • Fixed: Password in address not detected (# 1712941 - Jakub Roztocil)

    • Fixed: Weird directory listing with wu-ftpd (# 1929705 - Vadim Voituk)

  • Version 0.9.4 Requires java 1.5 and jEdit 4.3pre12.

    • New option: to use proxy for regular ftp logins. (# 1735335 - Voituk Vadim)

    • Fixed: No way to reinput incorrect password (# 1885830 - Voituk Vadim)

    • Little code refactoring & cleanup

  • Version 0.9.3 Requires java 1.5 and jEdit 4.3pre5.

    • Updated jsch lib to 0.1.37 (ezust)

    • New option: to use proxy for secure logins. (# 1873628 - Voituk Vadim)

    • Remove spaces from hostname (1744059 - kpouer)

  • Version 0.9.2 Requires java 1.5 and jEdit 4.3pre5

    • Refactored to make its secure connections reusable from the SshConsole plugin (ezust).

    • Added BROWSE_CAP to the FtpVFS.

  • Version 0.9.1 Requires jEdit 4.3pre4 (Nicholas O'leary)

    • Bugfix: unparented dialogs are now parented.

    • Bugfix: asking for passphrase more than once per session.

    • Remote symlinks work.

  • Version 0.9 Requires jEdit 4.3pre4

    • Ported to the JSch library, away from the SSHTools library.

    • Removed dependency on JakartaCommons

  • Version 0.7.9 Requires jEdit 4.3pre4 and JakartaCommons 0.3.

    • Removed dependency to gnu.regex; updated to use java.util.regex

    • Fixed 1489889 - read only warnings in FTP protocol

  • Version 0.7.7 requires jEdit 4.3pre4 and JakartaCommons 0.3.

    • Added an option to save passwords to disk, eclipse-style.

  • Version 0.7.6 requires jEdit 4.3pre4 and JakartaCommons 0.3.

    • patch 1445269 "readonly error"/chmod exceptionBugs. This requires jedit 4.3pre4.

    • Bug 1229449 + small UI fixes

  • Version 0.7.3 requires jEdit 4.2pre6 and JakartaCommons 0.3.

    • Added support for public/private key authentication.

  • Version 0.7.2 requires jEdit 4.2pre6 and JakartaCommons 0.3.

    • Updated to SSHTools 0.2.7.

    • Changed order that regexps are matched in to fix the problem with file listings containing numeric user IDs or group IDs.

    • Fix a problem with servers whose PWD command would return a relative path name.

  • Version 0.7.1 requires jEdit 4.2pre6 and JakartaCommons 0.3.

    • Updated to SSHTools 0.2.6 beta..

    • Fixed file listing on servers that don't output a file owner and group - again.

    • For non-existent files, the FTP file system would always report that they are directories. This made it impossible to Save as to a new file.

    • More fixes for VMS servers.

    • Fixed a problem that could cause "connection timeout" errors and failed operations.

  • Version 0.7 requires jEdit 4.2pre3 and JakartaCommons 0.3.

    • Updated to SSHTools 0.2.5 beta.

    • Fixed file listing on VMS FTP servers.

    • Fixed file listing on Solaris servers with ACLs enabled (Brion Vibber).

    • Fixed file listing on servers that don't output a file owner and group.

  • Version 0.6 requires jEdit 4.2pre2 and JakartaCommons 0.3.

    • Updated to SSHTools 0.1.7 beta.

    • Permissions are now preserved on SFTP servers.

    • Incomplete support for VMS FTP servers.

    • Support for AS/400 FTP servers (Nagy Gabor).

    • Moved Log4J to JakartaCommons plugin.

  • Version 0.5 requires jEdit 4.1pre8.

    • Connections to servers using the SSH File Transfer Protocol (SFTP) are now supported. This uses the sshtools library, version 0.0.5, and requires Java 2 version 1.4.

    • Fixed various problems in the connection pooling code.

    • Fixed problem with FTP servers localized for non-English languages.

    • Fixed problem with AIX FTP servers.

    • Permissions were not preserved properly (Brian Hardy).

    • Login dialog box host and user name fields now remember previously entered values.

    • Using the Save a Copy As command to save a buffer located on a non-FTP filesystem would result in an exception being thrown (but the file is still saved).

Appendix B. Feedback

All jEdit users are encouraged to join the mailing list to give feedback or ask questions to other users and developers.

The preferred way to send bug reports against most jEdit plugins is to use the jEdit Plugin Bugs Tracker.

Feature requests can be found on the jEdit Plugin feature requests tracker.

Development questions should be posted to the jEdit development mailing-list .