Service: SFTP Server - EyevinnOSC/community GitHub Wiki
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.
- If you have not already done so, sign up for an Eyevinn OSC account
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.
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 [email protected]Enter the password when prompted. You land in the user's home directory at /home/<username>/upload/.
In FileZilla, enter:
-
Host:
sftp://<host> - Port: the assigned port
- Username and Password from Step 1
- Protocol: SFTP – SSH File Transfer Protocol
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();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()osc create atmoz-sftp mysftp \
-o Username="upload" \
-o Password="s3cr3t"