# Using TREZOR as a hardware SSH/GPG agent
[![Build Status ](https://travis-ci.org/romanz/trezor-agent.svg?branch=master )](https://travis-ci.org/romanz/trezor-agent)
[![Python Versions ](https://img.shields.io/pypi/pyversions/trezor_agent.svg )](https://pypi.python.org/pypi/trezor_agent/)
[![Package Version ](https://img.shields.io/pypi/v/trezor_agent.svg )](https://pypi.python.org/pypi/trezor_agent/)
[![Development Status ](https://img.shields.io/pypi/status/trezor_agent.svg )](https://pypi.python.org/pypi/trezor_agent/)
[![Downloads ](https://img.shields.io/pypi/dm/trezor_agent.svg )](https://pypi.python.org/pypi/trezor_agent/)
See SatoshiLabs' blog posts about this feature:
- [TREZOR Firmware 1.3.4 enables SSH login ](https://medium.com/@satoshilabs/trezor-firmware-1-3-4-enables-ssh-login-86a622d7e609 )
- [TREZOR Firmware 1.3.6 — GPG Signing, SSH Login Updates and Advanced Transaction Features for Segwit ](https://medium.com/@satoshilabs/trezor-firmware-1-3-6-20a7df6e692 )
- [TREZOR Firmware 1.4.0 — GPG decryption support ](https://www.reddit.com/r/TREZOR/comments/50h8r9/new_trezor_firmware_fidou2f_and_initial_ethereum/d7420q7/ )
## Installation
Install the following packages:
$ apt-get install python-dev libusb-1.0-0-dev libudev-dev
$ pip install -U setuptools pip
Make sure you are running the latest firmware version on your hardware device.
Currently the following firmware versions are supported:
* [TREZOR ](https://wallet.trezor.io/data/firmware/releases.json ): `1.4.2+`
* [KeepKey ](https://github.com/keepkey/keepkey-firmware/releases ): `3.0.17+`
* [Ledger Nano S ](https://github.com/LedgerHQ/blue-app-ssh-agent ): `0.0.3+`
### TREZOR
Make sure that your `udev` rules are configured [correctly ](https://doc.satoshilabs.com/trezor-user/settingupchromeonlinux.html#manual-configuration-of-udev-rules ).
Then, install the latest [trezor_agent ](https://pypi.python.org/pypi/trezor_agent ) package:
$ pip install trezor_agent
Or, directly from the latest source code:
$ git clone https://github.com/romanz/trezor-agent
$ pip install --user -e trezor-agent/agents/trezor
If you have an error regarding `protobuf` imports (after installing it), please see [this issue ](https://github.com/romanz/trezor-agent/issues/28 ).
### KeepKey
Make sure that your `udev` rules are configured [correctly ](https://support.keepkey.com/support/solutions/articles/6000037796-keepkey-wallet-is-not-being-recognized-by-linux ).
Then, install the latest [keepkey_agent ](https://pypi.python.org/pypi/keepkey_agent ) package:
$ pip install keepkey_agent
Or, directly from the latest source code:
$ git clone https://github.com/romanz/trezor-agent
$ pip install --user -e trezor-agent/agents/keepkey
### Ledger Nano S
Make sure that your `udev` rules are configured [correctly ](http://support.ledgerwallet.com/knowledge_base/topics/ledger-wallet-is-not-recognized-on-linux ).
Then, install the latest [ledger_agent ](https://pypi.python.org/pypi/ledger_agent ) package:
$ pip install ledger_agent
Or, directly from the latest source code:
$ git clone https://github.com/romanz/trezor-agent
$ pip install --user -e trezor-agent/agents/ledger
## Usage
For SSH, see the [following instructions ](README-SSH.md ) (for Windows support,
see [trezor-ssh-agent ](https://github.com/martin-lizner/trezor-ssh-agent ) project (by Martin Lízner)).
For GPG, see the [following instructions ](README-GPG.md ).
See [here ](https://github.com/romanz/python-trezor#pin-entering ) for PIN entering instructions.
## Troubleshooting
If there is an import problem with the installed `protobuf` package,
see [this issue ](https://github.com/romanz/trezor-agent/issues/28 ) for fixing it.
### Gitter
Questions, suggestions and discussions are welcome: [![Chat ](https://badges.gitter.im/romanz/trezor-agent.svg )](https://gitter.im/romanz/trezor-agent)