{"id":13439437,"url":"https://github.com/artyom-poptsov/guile-ssh","last_synced_at":"2025-06-28T14:35:09.506Z","repository":{"id":8535414,"uuid":"10154266","full_name":"artyom-poptsov/guile-ssh","owner":"artyom-poptsov","description":"Guile-SSH is a library that provides access to the SSH protocol for GNU Guile programs.","archived":false,"fork":false,"pushed_at":"2024-11-10T16:49:57.000Z","size":2716,"stargazers_count":68,"open_issues_count":4,"forks_count":13,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-15T13:57:24.044Z","etag":null,"topics":["c","distributed-computing","guile","libssh","lisp","scheme","ssh"],"latest_commit_sha":null,"homepage":"https://memory-heap.org/~avp/projects/guile-ssh","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artyom-poptsov.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.org","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.blockchain.com/explorer/addresses/btc/bc1qp7vwxnp4z05fgedfsrqeqvt89fjwnnghng0vp5"]}},"created_at":"2013-05-19T10:54:58.000Z","updated_at":"2025-04-01T08:50:35.000Z","dependencies_parsed_at":"2024-01-26T20:46:10.990Z","dependency_job_id":"9807b357-4186-40c8-837f-951765adaa3f","html_url":"https://github.com/artyom-poptsov/guile-ssh","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom-poptsov%2Fguile-ssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom-poptsov%2Fguile-ssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom-poptsov%2Fguile-ssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom-poptsov%2Fguile-ssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artyom-poptsov","download_url":"https://codeload.github.com/artyom-poptsov/guile-ssh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249085460,"owners_count":21210267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","distributed-computing","guile","libssh","lisp","scheme","ssh"],"created_at":"2024-07-31T03:01:13.908Z","updated_at":"2025-04-15T13:57:32.914Z","avatar_url":"https://github.com/artyom-poptsov.png","language":"C","funding_links":["https://www.blockchain.com/explorer/addresses/btc/bc1qp7vwxnp4z05fgedfsrqeqvt89fjwnnghng0vp5"],"categories":["C","Frameworks and Libs"],"sub_categories":["Scheme"],"readme":"# -*- mode: org; -*-\n\n[[./doc/logo-v2.png]]\n\nGuile-SSH is a library that provides access to the [[https://en.wikipedia.org/wiki/Secure_Shell][SSH protocol]] for programs\nwritten in [[https://www.gnu.org/software/guile/][GNU Guile]] interpreter.  It is built upon the [[https://www.libssh.org/][libssh]] library.\n\n\n[[https://github.com/artyom-poptsov/guile-ssh/actions/workflows/guile2.2.yml][https://github.com/artyom-poptsov/guile-ssh/actions/workflows/guile2.2.yml/badge.svg]]\n[[https://github.com/artyom-poptsov/guile-ssh/actions/workflows/guile3.0.yml][https://github.com/artyom-poptsov/guile-ssh/actions/workflows/guile3.0.yml/badge.svg]]\n[[https://github.com/artyom-poptsov/guile-ssh/actions/workflows/fedora.yml][https://github.com/artyom-poptsov/guile-ssh/actions/workflows/fedora.yml/badge.svg]]\n[[https://github.com/artyom-poptsov/guile-ssh/actions/workflows/guix.yml][https://github.com/artyom-poptsov/guile-ssh/actions/workflows/guix.yml/badge.svg]]\n\n* Features\n  - The API that is sufficient for building of standalone SSH clients and\n    servers, or for embedding client/server functionality in your lispy Scheme\n    applications.\n  - Several authentication methods are supported, including password\n    authentication, public key and SSH agent authentication methods.\n  - Key management procedures: you can make key pairs, read keys from files,\n    get key hashes, get public keys from private keys etc.  DSS (only when\n    =--enable-dsa= option is passed to the =configure= script), RSA, RSA1 and\n    ECDSA (by means of OpenSSL) are supported.\n  - Port forwarding procedures and high-level API for creating of SSH tunnels.\n  - Distributed forms (=dist-map=, =distribute=, ...) that allow to spread the\n    evaluation of Scheme code between remote hosts.  Or you can just connect\n    to a remote REPL from Scheme using =with-ssh= procedure and evaluate some\n    expressions.  No special server needed on the remote side, just an SSH\n    daemon and GNU Guile installed!\n  - SFTP client API allows you to read and write remote files, or do directory\n    traversal over the SSH protocol right from the Scheme code.\n  - Remote popen API that allows you to make either input, output or\n    bidirectional pipes to remote processes.\n  - Detailed documentation in Texinfo format with examples included, even more\n    examples in =examples= directory.\n* License\n  Guile-SSH is free software: you can redistribute it and/or modify it under\n  the terms of the GNU General Public License as published by the Free\n  Software Foundation, either version 3 of the License, or (at your option)\n  any later version.  Please see =COPYING= file for the terms of GNU General\n  Public License.\n\n  The logo (=doc/logo.svg=, =doc/logo-with-text.svg= and rasterised versions)\n  is distributed under terms of [[https://creativecommons.org/licenses/by-sa/4.0/][Creative Commons Attribution-ShareAlike 4.0\n  International]].\n* Requirements\n\n - [[https://www.gnu.org/software/guile/][GNU Guile]], version 2.0.12 or later (known to work with 2.0.12, 2.0.14,\n   2.2.4, 3.0.1)\n - [[http://www.libssh.org/][libssh]], version 0.8.0 or later.\n\n* Distribution\n\nFiles:\n - AUTHORS contains list of people who contributed to the library\n   development.\n - COPYING contains the terms of GNU General Public License.\n - INSTALL contains general instructions for building/installing of\n   Guile-SSH.\n - NEWS describes user-visible changes.\n - TODO contains plans for the further development and list of known bugs.\n\nDirectories:\n - examples     -- Examples of Guile-SSH usage.\n - libguile-ssh -- Sources of the Guile-SSH library.\n - modules      -- Scheme modules.\n - doc          -- Documentation in Texinfo format.\n - tests        -- Unit tests.\n\nFiles are usually installed according to the prefix specified to\n=configure= script, =/usr/local= by default.  Building and installing\ngives you:\n\nLibraries, in =${prefix}/lib=:\n - libguile-ssh.so.\u003cversion\u003e\n - libguile-ssh.la\n - libguile-ssh.a\n\nGuile modules, in =${GUILE_SITE}/ssh=:\n - auth.scm    -- User authentication.\n - agent.scm   -- Interaction with SSH authentication agent instances.\n - channel.scm -- Channel manipulation.\n - dist.scm    -- Distributed forms.\n   - dist/job.scm  -- Low-level distributed job API.\n   - dist/node.scm -- Low-level distributed node API.\n - key.scm     -- Keys management.\n - log.scm     -- Interface to libssh logging facilities\n - message.scm -- Procedures for working with SSH messages.\n - popen.scm   -- Remote popen API.\n - server.scm  -- Server API.\n - session.scm -- Session management.\n - sftp.scm    -- SFTP client API.\n - shell.scm   -- High-level API to a remote shell.\n - tunnel.scm  -- SSH tunnels.\n - version.scm -- Information about versions.\n\nAll the modules will be compiled and produced .go files will be installed to\n=site-ccache= directory which is something like this:\n=${libdir}/guile/2.0/site-ccache/ssh/=.\n\nDocumentation in Info format, in =${prefix}/share/info/=:\n - guile-ssh.info\n\nExamples, in =${prefix}/share/guile-ssh/examples=:\n - ssshd.scm    -- SSH server example.\n - sssh.scm     -- SSH client example.\n + echo/\n   - client.scm -- Echo client example.\n   - server.scm -- Echo server example.\n + rpc/\n   - client.scm -- A simple Guile-RPC client that makes an RPC call over\n     a Guile-SSH tunnel.\n   - server.scm -- A simple Guile-RPC server.\n - rrepl.scm    -- Remote REPL example.\n - sscp.scm     -- Scheme secure copy.\n - pg-tunnel.scm -- Connect to a PostgreSQL instance through an SSH tunnel.\n - uptop.scm    -- Uppercase =top=, through a remote pipe.\n\n* Installation\n\nThe library can be installed by the following means:\n  - Using GNU Guix: https://www.gnu.org/software/guix/\n  - Using Arch GNU/Linux AUR package:\n    https://aur.archlinux.org/packages/guile-ssh/\n  - Using Parabola GNU/Linux package:\n    https://www.parabola.nu/packages/?q=guile-ssh\n  - Using openSUSE GNU/Linux package:\n    https://software.opensuse.org/package/guile-ssh\n  - Using a Homebrew Tap on macOS (thanks to Aleix Conchillo Flaqué):\n    https://github.com/aconchillo/homebrew-guile\n  - Manually.  If you're considering manual installation, see the notes below.\n\nThanks for all the people who helped with packaging of Guile-SSH!\n\nAlso there is a [[https://hub.docker.com/r/avvp/debian-guile/][Docker image]] based on Debian GNU/Linux that contains the\nlatest version of GNU Guile and Guile-SSH installed -- give it a try!\n\nFor a basic explanation of the installation of the package, see the\nINSTALL file.\n\nBut to make the long story short, you can try run the following in the project\ndirectory -- those commands will configure, build, check and install Guile-SSH\nin your system:\n#+BEGIN_EXAMPLE\n$ autoreconf -vif\n$ ./configure\n$ make\n$ make check\n$ make install\n#+END_EXAMPLE\n\nPlease *note* that you will need [[https://www.gnu.org/software/automake/][Automake]] 1.12 or later to run self-tests with\n=make check= (although the library itself can be built with older Automake\nversion such as 1.11, just leave out the =make check= step).\n\n*important* You probably want to call configure with the\n=--with-guilesitedir= option so that this package is installed in\nGuile's default path.  But, if you don't know where your Guile site\ndirectory is, run =configure= without the option, and it will give you\na suggestion.\n\n* Usage\nPlease see the documentation in Info format for API documentation and usage\nexamples -- you can open it by typing =info guile-ssh= in the shell, or using\n=C-h i m guile-ssh RET= combo in Emacs.  Also take a look on examples in the\n=examples= directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartyom-poptsov%2Fguile-ssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartyom-poptsov%2Fguile-ssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartyom-poptsov%2Fguile-ssh/lists"}