How to Enable RDP/SSH File Transfer Over Guacamole


Today, we are going to learn how to enable RDP/SSH file transfer over guacamole. Before you can proceed, ensure that you have Guacamole up and running. You can check our previous guides on setting up Guacamole on Ubuntu 18.04, Debian 9.8 and Fedora 29 by following the links below;

How to Enable RDP/SSH File Transfer Over Guacamole

With Guacamole, it is possible to transfer files between the remote systems and the local systems. Currently file transfer is supported for VNC, RDP, and SSH, using either the native file transfer support of the protocol or SFTP.

You can transfer files either by dragging and dropping or by using the upload button on the Guacamole menu.

Transfer Files over SSH using SFTP protocol

In order to enable file transfer over SSH on Guacamole using SFTP protocol, you need to edit the /etc/guacamole/user-mapping.xml and set the value of the enable-sftp parameter to true for the SSH connection.

vim /etc/guacamole/user-mapping.xml
        <!-- First authorized connection -->
        <connection name="Ubuntu-Server">
            <param name="hostname"></param>
            <param name="port">22</param>
            <param name="username">amos</param>
            <param name="enable-sftp">true</param>

Once you have made the changes, restart Tomcat and Guacamole daemon to effect.

systemctl restart tomcat8
systemctl restart guacd

Note that you can only transfer files to the directory on which you have write permissions.

Navigate to the Guacamole web interface and initiate an SSH connection to the remote server to transfer files to. Once you have logged in to the remote server, press Ctrl+Shift+Alt to open the Guacamole settings window.

Enable RDP/SSH File Transfer Over Guacamole

Next, click the device button to select the destination folder to upload the files to.

Enable RDP/SSH File Transfer Over Guacamole

Click on the Upload Files button on the top of the settings window to upload the files. The file transfer progress is shown on the bottom left of the window.

Enable RDP/SSH File Transfer Over Guacamole

Next, close the Settings window by pressing Ctrl+Shift+Alt and run ls on the remote upload directory to list the available files. You can also drag and drop the file to and from the server.

Transfer Files over RDP on Guacamole

Since file transfer is disabled by default, you need to need to define the enable-drive and drive-path parameters on the /etc/guacamole/user-mapping.xml configuration file to enable it. enable-drive enables file transfer feature while drive-path defines the directory in which transferred files will be stored.

vim /etc/guacamole/user-mapping.xml
        <connection name="Windows 7">
            <param name="hostname"></param>
            <param name="port">3389</param>
            <param name="enable-drive">true</param>
            <param name="drive-path">/shared-folder</param>

Ensure that the path specified by the drive-path parameter must exist on the Guacamole server and accessible by guacd, readable and writable by the user that runs guacd. Note that this does not refer to a directory on the RDP server.

Next, check if the library object is available on the /usr/lib/x86_64-linux-gnu/freerdp directory.

If the directory neither does the library exits, create the directory and make a symbolic of the library object from /usr/local/lib/freerdp/ as shown below;

mkdir -p /usr/lib/x86_64-linux-gnu/freerdp
ln -s /usr/local/lib/freerdp/ /usr/lib/x86_64-linux-gnu/freerdp

Once that is done, restart tomcat and guacd.

systemctl restart tomcat8
systemctl restart guacd

This will automatically create a virtual drive from which users can transfer files to and from. This virtual drive will appear as a network drive within the RDP session. Files uploaded and downloaded will be preserved within this drive, even after disconnecting.

Login to Guacamole Web dashboard and initiate a connection to your Windows system. Once you are logged in, you should be able to see an RDP virtual drive created.

Enable RDP/SSH File Transfer Over Guacamole

To transfer files to the remote, use the upload button on the Guacamole settings window that you can launch by pressing Ctrl+Shift+Alt. The file will automatically put the file on the RDP virtual drive on the remote system.

To Download the files from the remote system, just place the files on the Download folder on the RDP virtual drive. This will automatically prompt you to save the file on your local system.

You can always check either syslog or Tomcat logs for any error messages, just in case.

That is all about how to enable RDP/SSH file transfer over Guacamole. You can learn more about Guacamole file transfer here. Enjoy


  1. Hi just a suggestion.. a very great guide could be : how to install audio in Centos7.7 with XRDP. the pulseaudio just don’t work at all and quite hard to get it..
    as a possible article.
    Thanks again

  2. file is not present on rehl8 server. Do you know how to enable this on server and initiate the copy paste logic on windows server?

    Please help me.


Please enter your comment!
Please enter your name here