Getting Started
SFTP Server is a simple, secure file transfer server based on atmoz/sftp, which wraps OpenSSH in a minimal Docker image. It creates chroot-jailed user accounts that can upload and download files over SFTP from any standard client — FileZilla, sftp, WinSCP, or any programming language with an SSH library. Available as an open web service in Eyevinn Open Source Cloud, the SFTP Server is a good fit for secure file drops, automated upload pipelines, and application-to-application file transfer.
Prerequisites
- If you have not already done so, sign up for an Eyevinn OSC account
Step 1: Create an SFTP Server instance
Navigate to the SFTP Server service in the Eyevinn OSC web console. Click Create sftp and fill in:
| Field | Description | Example |
|---|---|---|
| Name | Short alphanumeric name for your instance | mysftp |
| Username | Login name for the SFTP user | upload |
| Password | Password for the SFTP user | s3cr3t |
Click Create and wait for the status indicator to turn green and show running.
Security note: Change the default password to something strong before sharing connection details with clients. SFTP traffic is encrypted by SSH, but a weak password is still a risk.
Step 2: Connect via SFTP
Once the instance is running, click it to reveal the host and port. Connect with any SFTP client:
sftp -P <PORT> <username>@<host>
For example:
sftp -P 10522 upload@mysftp-atmoz-sftp.auto.prod.osaas.io
Enter the password when prompted. You land in the user's home directory at /home/<username>/upload/.
FileZilla
In FileZilla, enter:
- Host:
sftp://<host> - Port: the assigned port
- Username and Password from Step 1
- Protocol: SFTP – SSH File Transfer Protocol
Node.js (ssh2-sftp-client)
import SftpClient from 'ssh2-sftp-client';
const sftp = new SftpClient();
await sftp.connect({
host: '<host>',
port: <PORT>,
username: '<username>',
password: '<password>'
});
// Upload a file
await sftp.put('./local-file.csv', '/upload/remote-file.csv');
// List files
const list = await sftp.list('/upload/');
console.log(list);
await sftp.end();
Python (paramiko)
import paramiko
transport = paramiko.Transport(('<host>', <PORT>))
transport.connect(username='<username>', password='<password>')
sftp = paramiko.SFTPClient.from_transport(transport)
# Upload
sftp.put('local-file.csv', '/upload/remote-file.csv')
# Download
sftp.get('/upload/remote-file.csv', 'downloaded.csv')
sftp.close()
transport.close()
CLI usage
osc create atmoz-sftp mysftp \
-o Username="upload" \
-o Password="s3cr3t"