File Transfer Config

Transferring files between local and remote connection

Keeper Connection Manager support file transfers in both directions, with unique features available for the different connection types.

Files can be transferred between the local system and the remote connection through simple drag-and-drop.

Files can be transferred to the remote system through drag-and-drop. File transfer from remote system to local browser uses the guacctl tool.

Files can be transferred via sftp to the remote system through drag-and-drop. The sftp endpoint is configured in the Connection Edit screen.

The new MySQL connection type supports transfer of CSV data into and out of the remote database through the browser interface using special "select" and "load" commands that have been built as extensions to the MySQL syntax.

RDP / Windows

The connection parameters used for File Transfer on Windows connections is displayed below. RDP connection types support two different methods of file transfer. The "Enable Drive" method uses the RDP protocol and maps file transfers to a mapped drive on the remote system.

Depending on the installation method, the "Drive Path" can be configured a few different ways.

On Docker Installation methods, there is a default volume mount to /var/lib/guacamole/

The Drive Path must include a base path of /var/lib/guacamole/drives which has the necessary permissions to write files. If the same Drive Path is specified on multiple connections, the files will be shared among those connections. If the Drive Path contains a token after /drives/ such as ${GUAC_USERNAME}, each user will see their own shared drive.

Drive Path
/var/lib/guacamole/drives/${GUAC_USERNAME}

In this example, the following parameters are set:

  • Enable Drive: Check this to activate the file transfer capability

  • Drive Path: Set this path according to the environment. The folder must be writable by the guacd user.

  • Automatically Create Drive: If the permissions allow, the subfolders will be created on demand.

The mapped drive will show up on the remote system as seen below:

Windows connections can optionally use SFTP for file transfer. This can be activated in the SFTP section of the connection. This would require an SFTP client/server to be running on windows.

Transfer Files

To transfer a file from the local system to the remote connection, simply drag-and-drop the file into the window. A progress indicator will show up on the lower right.

After the file transfer is complete, it will appear in the Drive folder.

To transfer a file from the remote system to the local computer, simply drag and drop a file on the remote system into the mapped Drive and then drag into the "Download" folder of the mapped drive. The file will instantly download to the local system.

SSH / Linux

SSH Connection types provide SFTP file transfer, which conveniently allows you to drag and drop a file into the SSH connection screen. Files are transferred to the designated folder as specified in the SSH connection settings.

Transfer to Linux

Simply drag and drop a file into the SSH connection to transfer a file to the remote system. By default, the files will transfer to the home folder unless a different root directory path is specified.

Transfer from Linux

To transfer files from the SSH remote connection to the local filesystem, you can download a tool called guacctl into the remote system and use it for performing outbound transfers.

Download guacctl and set as executable:

sudo wget https://raw.githubusercontent.com/apache/guacamole-server/master/bin/guacctl
sudo chmod +x guacctl

Initiate the file download:

sudo ./guacctl -d <filename>

MySQL

Importing

Importing Data is accomplished through the web browser interface by using the standard "LOAD DATA LOCAL INFILE" SQL command. Keeper Connection Manager intercepts the response data and redirects it through the native file download facility of the web browser.

For example:

LOAD DATA LOCAL INFILE "input.csv" 
INTO TABLE products
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 LINES

This SQL query will trigger a browser file upload and then import the provided data.

Details about the syntax can be found at the MySQL website.

Exporting

Exporting CSV data from SQL query using a new SELECT... INTO LOCAL OUTFILE command.

For example:

 SELECT * FROM products INTO LOCAL OUTFILE "products.csv";

File Transfer Upload Limit

The file upload limit is controlled through the client_max_body_size setting in the NGINX configuration file.

On Docker installations of Keeper Connection Manager, the default value of this setting is "0" which allows for an unlimited upload file size.

On Advanced Linux Installation method, the default file transfer limit might be set to 1MB and most likely, you will want to raise this limit. If you followed the typical installation instructions with NGINX, you should modify the configuration file, e.g. /etc/nginx/conf.d/guacamole.conf

Ensure the following parameter (client_max_body_size) is set with the preferred maximum file size limit. For example the below is set for 200MB size limit:

client_max_body_size 200m;

After updating this value, make sure to restart NGINX

systemctl restart nginx

Custom Network Drive

If you have an environment where you would like the file location path associated with an existing network drive, follow the steps below:

  • Mount your network drive to the Keeper Connection Manager host filesystem

  • Volume mount the network drive path in the Docker Compose for the guacd container

  • Ensure that the guacd user can write the files in the docker container

The most important thing to keep in mind when doing this is that it's the "guacd" service that needs to be able to write files in the drive path. The guacd service operates as a reduced-privilege "guacd" user within the "guacd" container, and so you will need to set file permissions accordingly. This can be done either by modifying the files on the filesystem to have appropriate ownerships using the numerical UID/GID used by the container, or by using the GUACD_UID and GUACD_GID environment variables to configure the container to use the UID/GID already used by the files on the guacd container filesystem.

Last updated