SSH

Odo interacts with remote data over ssh using the paramiko library.

URIs

SSH uris consist of the ssh:// protocol, a hostname, and a filename. Simple and complex examples follow:

ssh://hostname:myfile.csv
ssh://username@hostname:/path/to/myfile.csv

Additionally you may want to pass authentication information through keyword arguments to the odo function as in the following example

>>> from odo import odo
>>> odo('localfile.csv', 'ssh://hostname:myfile.csv',
...     username='user', key_filename='.ssh/id_rsa', port=22)

We pass through authentication keyword arguments to the paramiko.SSHClient.connect method. That method takes the following options:

port=22
username=None
password=None
pkey=None
key_filename=None
timeout=None
allow_agent=True
look_for_keys=True
compress=False
sock=None

Constructing SSH Objects explicitly

Most users usually interact with odo using URI strings.

Alternatively you can construct objects programmatically. SSH uses the SSH type modifier

>>> from odo import SSH, CSV, JSON
>>> auth = {'user': 'ubuntu',
...         'host': 'hostname',
...         'key_filename': '.ssh/id_rsa'}
>>> data = SSH(CSV)('data/accounts.csv', **auth)
>>> data = SSH(JSONLines)('accounts.json', **auth)

Conversions

We’re able to convert any text type (CSV, JSON, JSONLines, TextFile) to its equivalent on the remote server (SSH(CSV), SSH(JSON), ...).:

SSH(*) <-> *

The network also allows conversions from other types, like a pandas DataFrame to a remote CSV file, by routing through a temporary local csv file.:

Foo <-> Temp(*) <-> SSH(*)