README 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. # -*- mode: org; -*-
  2. [[./doc/logo-with-text.png]]
  3. Guile-SSH is a library that provides access to the [[https://en.wikipedia.org/wiki/Secure_Shell][SSH protocol]] for programs
  4. written in [[https://www.gnu.org/software/guile/][GNU Guile]] interpreter. It is built upon the [[https://www.libssh.org/][libssh]] library.
  5. * Features
  6. - The API that is sufficient for building of standalone SSH clients and
  7. servers, or for embedding client/server functionality in your lispy Scheme
  8. applications.
  9. - Several authentication methods are supported, including password
  10. authentication, public key and SSH agent authentication methods.
  11. - Key management procedures: you can make key pairs, read keys from files,
  12. get key hashes, get public keys from private keys etc. DSS, RSA, RSA1 and
  13. ECDSA (by means of OpenSSL) are supported.
  14. - Port forwarding procedures and high-level API for creating of SSH tunnels.
  15. - Distributed forms (=dist-map=, =distribute=, ...) that allow to spread the
  16. evaluation of Scheme code between remote hosts. Or you can just connect
  17. to a remote REPL from Scheme using =with-ssh= procedure and evaluate some
  18. expressions. No special server needed on the remote side, just an SSH
  19. daemon and GNU Guile installed!
  20. - SFTP client API allows you to read and write remote files over the SSH
  21. protocol right from the Scheme code.
  22. - Remote popen API that allows you to make either input, output or
  23. bidirectional pipes to remote processes.
  24. - Detailed documentation in Texinfo format with examples included, even more
  25. examples in =examples= directory.
  26. * License
  27. Guile-SSH is free software: you can redistribute it and/or modify it under
  28. the terms of the GNU General Public License as published by the Free
  29. Software Foundation, either version 3 of the License, or (at your option)
  30. any later version. Please see =COPYING= file for the terms of GNU General
  31. Public License.
  32. The logo (=doc/logo.svg=, =doc/logo-with-text.svg= and rasterised versions)
  33. is distributed under terms of [[https://creativecommons.org/licenses/by-sa/4.0/][Creative Commons Attribution-ShareAlike 4.0
  34. International]].
  35. * Requirements
  36. - [[https://www.gnu.org/software/guile/][GNU Guile]], version 2.0.9 or later (known to work with 2.0.9, 2.0.12)
  37. - [[http://www.libssh.org/][libssh]], version 0.6.4 or later (0.7.3 or later is recommended due to
  38. [[https://www.libssh.org/2016/02/23/libssh-0-7-3-security-and-bugfix-release/][CVE-2016-0739 found in previous versions]].)
  39. * Distribution
  40. Files:
  41. - AUTHORS contains list of people who contributed to the library
  42. development.
  43. - COPYING contains the terms of GNU General Public License.
  44. - INSTALL contains general instructions for building/installing of
  45. Guile-SSH.
  46. - NEWS describes user-visible changes.
  47. - TODO contains plans for the further development and list of known bugs.
  48. Directories:
  49. - examples -- Examples of Guile-SSH usage.
  50. - libguile-ssh -- Sources of the Guile-SSH library.
  51. - modules -- Scheme modules.
  52. - doc -- Documentation in Texinfo format.
  53. - tests -- Unit tests.
  54. Files are usually installed according to the prefix specified to
  55. =configure= script, =/usr/local= by default. Building and installing
  56. gives you:
  57. Libraries, in =${prefix}/lib=:
  58. - libguile-ssh.so.<version>
  59. - libguile-ssh.la
  60. - libguile-ssh.a
  61. Guile modules, in =${GUILE_SITE}/ssh=:
  62. - auth.scm -- User authentication.
  63. - channel.scm -- Channel manipulation.
  64. - dist.scm -- Distributed forms.
  65. - dist/job.scm -- Low-level distributed job API.
  66. - dist/node.scm -- Low-level distributed node API.
  67. - key.scm -- Keys management.
  68. - log.scm -- Interface to libssh logging facilities
  69. - message.scm -- Procedures for working with SSH messages.
  70. - popen.scm -- Remote popen API.
  71. - server.scm -- Server API.
  72. - session.scm -- Session management.
  73. - sftp.scm -- SFTP client API.
  74. - shell.scm -- High-level API to a remote shell.
  75. - tunnel.scm -- SSH tunnels.
  76. - version.scm -- Information about versions.
  77. All the modules will be compiled and produced .go files will be installed to
  78. =site-ccache= directory which is something like this:
  79. =${libdir}/guile/2.0/site-ccache/ssh/=.
  80. Documentation in Info format, in =${prefix}/share/info/=:
  81. - guile-ssh.info
  82. Examples, in =${prefix}/share/guile-ssh/examples=:
  83. - ssshd.scm -- SSH server example.
  84. - sssh.scm -- SSH client example.
  85. + echo/
  86. - client.scm -- Echo client example.
  87. - server.scm -- Echo server example.
  88. + rpc/
  89. - client.scm -- A simple Guile-RPC client that makes an RPC call over
  90. a Guile-SSH tunnel.
  91. - server.scm -- A simple Guile-RPC server.
  92. - rrepl.scm -- Remote REPL example.
  93. - sscp.scm -- Scheme secure copy.
  94. - pg-tunnel.scm -- Connect to a PostgreSQL instance through an SSH tunnel.
  95. - uptop.scm -- Uppercase =top=, through a remote pipe.
  96. * Installation
  97. The library can be installed by the following means:
  98. - Using GNU Guix: https://www.gnu.org/software/guix/
  99. - Using Arch GNU/Linux AUR package:
  100. https://aur.archlinux.org/packages/guile-ssh/
  101. - Manually. If you're considering manual installation, see the notes below.
  102. Thanks for all the people who helped with packaging of Guile-SSH!
  103. For a basic explanation of the installation of the package, see the
  104. INSTALL file.
  105. Please *note* that you will need [[https://www.gnu.org/software/automake/][Automake]] 1.12 or later to run
  106. self-tests with =make check= (but the library itself can be built with
  107. older Automake version such as 1.11).
  108. *important* You probably want to call configure with the
  109. =--with-guilesitedir= option so that this package is installed in
  110. Guile's default path. But, if you don't know where your Guile site
  111. directory is, run =configure= without the option, and it will give you
  112. a suggestion.
  113. * Usage
  114. Please see the documentation in Info format for API documentation and usage
  115. examples -- you can open it by typing =info guile-ssh= in the shell, or using
  116. =C-h i m guile-ssh RET= combo in Emacs. Also take a look on examples in the
  117. =examples= directory.