OpenSSH/Development

< OpenSSH

It is possible to advance OpenSSH through donations of hardware or money. See the OpenSSH project web site at www.openssh.org for details.

OpenSSH is a volunteer project with the goal of making quality software. In that way it relies upon hardware and cash donations to keep the project rolling. Funds are needed for daily operation to cover network line subscriptions and electrical costs. If 2 dollars were given for every download of the OpenSSH source code in 2015 from the master site, ignoring the mirrors, or if a penny was donated for every pf or OpenSSH installed with a mainstream operating system or phone in 2015[1], then funding goals for the year would be met. Hardware is needed for development and porting to new architectures and platforms always requires new hardware.

OpenSSH is currently developed by two teams. The first team works providing code that is as clean, simple and secure as possible as part of the OpenBSD project. The second team works using this core version and ports it to a great many other operating systems. Thus there are two development tracks, the OpenBSD core and the portable version. The work is all done in countries that permit export of cryptography.

Use the Source, Luke

The main development branch of OpenSSH is part of the OpenBSD project. So the "-current" branch of OpenBSD, available as source code, is where to look for current activity.

The source code for the portable releases of OpenSSH are published using anonymous CVS, so no password is needed to download source from the read-only repository. It is provided and maintained by Damien Miller. Nightly, bleeding-edge snapshots of OpenSSH itself are publicly available from its own CVS tree. Use a mirror when possible.

 
export CVSROOT=anoncvs@anoncvs.mindrot.org:/cvs
export CVS_RSH=/usr/bin/ssh
cvs get openssh

The fingerprint for the key used by the OpenSSH source code repository, as of this writing, is:

2048 SHA256:UNyCGjDDKB8hPDhrgMRAID6F53TyECEgnMmBN/4ZbuY anoncvs.mindrot.org (RSA)

We ask anyone wishing to report security bugs in OpenSSH to please use the contact address given in the source and to practice responsible disclosure.

libssh

libssh is an independent project that provides a multiplatform C library implementing the SSHv2 and SSHv1 protocols for client and server implementations. With libssh, developers can remotely execute programs, transfer files and use a secure and transparent tunnel for your remote applications.

libssh is available under LGPL 2.1 license, on the web page https://www.libssh.org/

Features:

Additional Features:


libssh2

libssh2 is another independent project providing a lean C library implementing the SSH2 protocol for embedding specific SSH capabilities into other tools. It has a stable, well-documented API for working on the client side with the different SSH subsystems: Session, Userauth, Channel, SFTP, and Public Key. The API can be set to either blocking or non-blocking. The code uses strict name spaces, is C89-compatible and builds using regular GNU Autotools.

libssh2 is available under a modified BSD license. The functions are each documented in their own manual pages. The project web site contains the documentation, source code and examples: http://www.libssh2.org/

There is a mailing list for libssh2 in addition to an IRC channel. The project is small, low-key and, as true to the spirit of the Internet, a meritocracy. Hundreds of specific functions allow specific activities and components to be cherry-picked and added to an application:

See also the library libcurl which supports SFTP and SCP URLs.

Thrussh

Thrussh is an SSH library written in Rust and available under the Apache License version 2.0. It is a full implementation of the SSH 2 protocol. The only non-Rust part is the crypto backend, which uses ring instead. It is designed to work on any platform and to use asynchronous I/O. The project web site contains the documentation, source code, and examples. The code is accessible using darcs:

darcs get https://pijul.org/thrussh

It is not an implementation of an actual server or client, but instead contains all the elements needed to write custom clients and servers using Rust.

Other language bindings for the SSH protocols

What follows is a list of additional independent resources by programming language:

Perl

Python

Paramiko

Fabric

libssh2

Ruby

Net::SSH

Capistrano

Java

Jaramiko

JSch - a pure Java implementation of SSH2.

 

References

 

OpenSSH

Overview Why Encryption Protocols Implementations Clients Client Configuration Server Patterns Utilities Third Party Logging Development
  Cookbook: Remote Processes Tunnels Automated Backup File Transfer with SFTP Public Key Authentication Host-based Authentication Load Balancing Multiplexing Proxies and Jump Hosts  


This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.