SSHClientKeyApi
Simple Elixir implementation for the Erlang ssh_client_key_api
behavior, to
make it easier to specify SSH keys and known_hosts
files independently of
any particular user’s home directory.
By itself, ssh_client_key_api
does not provide SSH functionality, it only adds
a way to send private key information to an ssh connection. It is meant to be
used alongside an SSH library such as :ssh
, SSHex
, SSHKit
or the like.
Installation
The package can be installed by adding ssh_client_key_api
to your list of
dependencies in mix.exs
:
def deps do
[{:ssh_client_key_api, "~> 0.2.0"}]
end
Using SSHClientKeyApi
Options
identity
:IO.device
providing the ssh private key (required)known_hosts
:IO.device
providing the known hosts list. If providing a File IO, it should have been opened in:write
mode (required)silently_accept_hosts
:boolean
silently accept and add new hosts to the known hosts. By default only known hosts will be accepted.passphrase
:binary
passphrase if your key is protected (optional)
SSHClientKeyApi
is meant to primarily be used via the convenience function
with_config
:
key = File.open!("path/to/keyfile.pem")
known_hosts = File.open!("path/to/known_hosts")
cb = SSHClientKeyAPI.with_options(identity: key, known_hosts: known_hosts, silently_accept_hosts: true)
The result can then be passed as an option when creating an SSH connection.
SSHKit
connection = SSHKit.SSH.connect("example.com", key_cb: cb)
# or with a SSHKit.Context:
context = SSHKit.context("example.com", key_cb: cb)
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ssh_client_key_api.