Setup a Static IP for Python SFTP using Paramiko & QGTunnel

Learn how to route Python SFTP file transfers through a QuotaGuard Static IP using Paramiko and QGTunnel.

Prerequisites

# install required pip
pip install paramiko

# install QGTunnel
curl https://s3.amazonaws.com/quotaguard/qgtunnel-latest.tar.gz | tar xz

Instructions

Run example
QUOTAGUARDSTATIC_URL=... bin/qgtunnel python app.py

Be sure to set QUOTAGUARDSTATIC_URL to your proxy URL from the QuotaGuard Dashboard. Either the HTTP or the SOCKS URL will work because the QGTunnel program will convert to the right port number.

Test in Docker
docker build -t qg-static-python-sftp-paramiko-example .
docker run -e QUOTAGUARDSTATIC_URL=... qg-static-python-sftp-paramiko-example

Code Samples

app.py
#/usr/bin/env python
import paramiko

if __name__ == '__main__':
    tport = paramiko.Transport(('test.rebex.net',2222))
    tport.connect(username='demo',password='password')

    sftp = paramiko.SFTPClient.from_transport(tport)
    sftp.get('readme.txt','readme.txt')
    sftp.close()

    tport.close()

Docker File
FROM python:latest

#install paramiko
RUN pip install -U pip && \
    pip install paramiko

WORKDIR /app

#install qgtunnel
RUN curl https://s3.amazonaws.com/quotaguard/qgtunnel-latest.tar.gz | tar xz
ENV QGTUNNEL_DEBUG true

COPY .qgtunnel .qgtunnel
COPY app.py app.py
COPY .run.sh .run.sh

ENTRYPOINT [ "/bin/bash", "/app/.run.sh" ]