Did you know ... Search Documentation:
Pack libssh -- README.md

A SWI-Prolog embedded SSH server

This pack provides an SSH server based on the libssh library. On a connection the server creates two threads, one pure C thread that is responsible for the communication and a Prolog thread that connects to the created pseudo terminal and runs the normal Prolog toplevel prolog/0. If possible, i.e., if library(libedit) is used for command line editing), a command line editor is activated inside the thread providing the usual editing and history.

Authentication

The library currently provides SSH public key and password authentication. The file examples/password.pl illustrates how password authentication can be set up. By default, the system approves the keys from ~/.ssh/authorized_keys, which allows anyone with a key that grants access to this acount to also access the Prolog server.

By default the server binds only to the localhost interface. Public access requires the option bind_address(*).

Host keys

SSH relies on a host key to guarantee you are always connecting to the same server. By default these keys are found in etc/ssh. The default configuration creates a set of keys if these keys do not exist using the following commands

mkdir -p etc/ssh
ssh-keygen -A -f .

Installation

The server may be installed using

?- pack_install(libssh).

Prerequisites

  • CMake and the common build essentials
  • libssh development files:
    • Ubuntu: sudo apt install libshh-dev
    • Fedora: sudo dnf install libshh-devel
    • MacOS: sudo port install libssh