From Wikipedia, the free encyclopedia
Jump to: navigation, search
Not to be confused with OpenSSL.
OpenSSH logo.png
"Don't tell anyone that I'm free"
Developer(s) The OpenBSD Project
Initial release 1 December 1999; 15 years ago (1999-12-01)
Stable release 7.1[1] / August 20, 2015; 38 days ago (2015-08-20)
Development status Active
Written in C
Operating system Cross-platform
Type Remote access
License Simplified BSD

OpenSSH, also known as OpenBSD Secure Shell,[a] is a suite of security-related network-level utilities based on the SSH protocol, which help to secure network communications via the encryption of network traffic over multiple authentication methods and by providing secure tunneling capabilities.[2] OpenSSH was designed as a free and open-source alternative to the proprietary SSH implementation developed by Tatu Ylönen and offered by SSH Communications Security.

OpenSSH is a project of the OpenBSD team and is funded via donations. The proprietary SSH implementation was originally developed under a license that allowed other developers or users to fork or create an offshoot of the software with their own customizations. As a result, OpenSSH is a fork of one of those customizations and was first released as part of a Unix-like operating system called OpenBSD in 1999.[3] As part of the forking process, OpenSSH was released under a BSD license, an open-source license that allows open manipulations and contributions. In order to effectively maintain the program, the OpenSSH project is developed under a policy of producing clean and audited code.[4]

OpenSSH is not a single computer program, but rather a suite of programs in the OpenBSD operating system that offers an alternative to unencrypted network communication protocols like FTP and Rlogin. While OpenSSH is not actively maintained for operating systems other than OpenBSD, a dedicated team occasionally releases a version that can be ported or used in other operating systems. This has allowed OpenSSH and its derivatives to account for an almost 88% market share as of July 2008.[5]


OpenSSH was created by the OpenBSD team as an alternative to the original SSH software by Tatu Ylönen, which is now proprietary software.[6] Although source code is available for the original SSH, various restrictions are imposed on its use and distribution. OpenSSH was created as a fork of Björn Grönvall's OSSH that itself was a fork of Tatu Ylönen's original free SSH 1.2.12 release, which was the last one having a license suitable for forking.[7] The OpenSSH developers claim that their application is more secure than the original, due to their policy of producing clean and audited code and because it is released under the BSD license, the open source license to which the word open in the name refers.

OpenSSH first appeared in OpenBSD 2.6 and the first portable release was made in October 1999.[3]


  • OpenSSH 7.1: August 20, 2015[1]
    • This is a bugfix release.
  • OpenSSH 7.0: August 11, 2015[8]
    • The focus of this release is primarily to deprecate weak, legacy and unsafe cryptography.
  • OpenSSH 6.9: July 1, 2015[9]
    • This is primarily a bugfix release.
  • OpenSSH 6.8: March 18, 2015
    • Added new extension to facilitate public key discovery and rotation for trusted hosts (for transition from DSA to Ed25519 public host keys)[10]
  • OpenSSH 6.7: October 6, 2014
    • The default set of ciphers and MACs has been altered to remove unsafe algorithms. In particular, CBC ciphers and arcfour* are disabled by default.
    • Compile-time option to not depend on OpenSSL[11]
    • Add support for Unix domain socket forwarding
  • OpenSSH 6.6: March 16, 2014
    • This is primarily a bugfix release.
  • OpenSSH 6.5: January 30, 2014
  • OpenSSH 6.4: November 8, 2013
    • This release fixes a security bug with AES-GCM
  • OpenSSH 6.3: September 13, 2013
    • This release is predominantly a bugfix release
  • OpenSSH 6.2: March 22, 2013
    • Add a GCM-mode for the AES cipher, similar to RFC 5647
    • Added support for encrypt-then-mac MAC modes
    • Added support for multiple required authentication methods
    • Added support for Key Revocation Lists
  • OpenSSH 6.1: August 29, 2012
    • This is primarily a bugfix release.
    • Enables pre-auth sandboxing by default
    • Finds ECDSA keys in ssh-keyscan and SSHFP DNS records by default now
  • OpenSSH 6.0: April 22, 2012
    • This is primarily a bugfix release.
  • OpenSSH 5.9: September 6, 2011
  • OpenSSH 5.8: February 4, 2011
  • OpenSSH 5.7: January 24, 2011
  • OpenSSH 5.6: August 23, 2010
  • OpenSSH 5.5: April 16, 2010
  • OpenSSH 5.4: March 8, 2010
    • Disabled SSH protocol 1 default support. Clients and servers must now explicitly enable it.
    • Added PKCS11 authentication support for ssh(1) (-I pkcs11)
    • Added Certificate based authentication
    • Added "Netcat mode" for ssh(1) (-W host:port). Similar to "-L tunnel", but forwards instead stdin and stdout. This allows, for example, using ssh(1) itself as a ssh(1) ProxyCommand to route connections via intermediate servers, without the need for nc(1) on the server machine.
    • Added the ability to revoke public keys in sshd(8) and ssh(1). While it was already possible to remove the keys from authorised lists, revoked keys will now trigger a warning if used.
  • OpenSSH 5.3: October 1, 2009
  • OpenSSH 5.2: February 23, 2009
  • OpenSSH 5.1: July 21, 2008
  • OpenSSH 5.0: April 3, 2008
  • OpenSSH 4.9: March 30, 2008
    • Added chroot support for sshd(8)
    • Create an internal SFTP server for easier use of the chroot functionality
  • OpenSSH 4.7: September 4, 2007
  • OpenSSH 4.6: March 9, 2007
  • OpenSSH 4.5: November 7, 2006
  • OpenSSH 4.4: September 27, 2006
  • OpenSSH 4.3: February 1, 2006
    • Added OSI layer 2/3 tun-based VPN (-w option on ssh(1))
  • OpenSSH 4.2: September 1, 2005
  • OpenSSH 4.1: May 26, 2005
  • OpenSSH 4.0: March 9, 2005
  • OpenSSH 3.9: August 17, 2004
  • OpenSSH 3.8: February 24, 2004
  • OpenSSH 3.7.1: September 16, 2003
  • OpenSSH 3.7: September 16, 2003
  • OpenSSH 3.6.1: April 1, 2003
  • OpenSSH 3.6: March 31, 2003
  • OpenSSH 3.5: October 14, 2002
  • OpenSSH 3.4: June 26, 2002

Development and structure[edit]

OpenSSH remotely controlling a server through Unix shell

OpenSSH is developed as part of the OpenBSD operating system. Rather than including changes for other operating systems directly into OpenSSH, a separate portability infrastructure is maintained by the OpenSSH Portability Team and "portable releases" are made periodically. This infrastructure is substantial, partly because OpenSSH is required to perform authentication, a capability that has many varying implementations. This model is also used for other OpenBSD projects such as OpenNTPD.

The OpenSSH suite includes the following command-line utilities and daemons:

  • ssh, a replacement for rlogin, rsh and telnet to allow shell access to a remote machine.
  • scp, a replacement for rcp
  • sftp, a replacement for ftp to copy files between computers
  • sshd, the SSH server daemon
  • ssh-keygen, a tool to inspect and generate the RSA, DSA and Elliptic Curve keys that are used for user and host authentication
  • ssh-agent and ssh-add, utilities to ease authentication by holding keys ready and avoid the need to enter passphrases every time they are used
  • ssh-keyscan, which scans a list of hosts and collects their public keys

The OpenSSH server can authenticate users using the standard methods supported by the ssh protocol: with a password; public-key authentication, using per-user keys; host-based authentication, which is a secure version of rlogin's host trust relationships using public keys; keyboard-interactive, a generic challenge-response mechanism that is often used for simple password authentication but which can also make use of stronger authenticators such as tokens; and Kerberos/GSSAPI. The server makes use of authentication methods native to the host operating system; this can include using the BSD authentication system (bsd auth) or PAM to enable additional authentication through methods such as one-time passwords. However, this occasionally has side-effects: when using PAM with OpenSSH it must be run as root, as root privileges are typically required to operate PAM. OpenSSH versions after 3.7 (September 16, 2003) allow PAM to be disabled at run-time, so regular users can run sshd instances.

On OpenBSD OpenSSH supports OTP and utilises systrace for sandboxing but like most OpenBSD native services, OpenSSH also utilises a dedicated sshd user by default to drop privileges and perform privilege separation in accordance to OpenBSDs least privilege policy that has been applied throughout the operating system such as for their X server (see Xenocara).

OpenSSH provides no support for Microsoft Windows, though by using additional software such as Cygwin or Subsystem for UNIX-based Applications OpenSSH can be used under Windows.


OpenSSH includes the ability to forward remote TCP ports over a secure tunnel, allowing that way arbitrary TCP ports on the server side and on the client side to be connected through an SSH tunnel.[14] This is used to multiplex additional TCP connections over a single SSH connection, to conceal connections and encrypting protocols that are otherwise unsecured, and to circumvent firewalls what opens up space for potential security issues. An X Window System tunnel may be created automatically when using OpenSSH to connect to a remote host, and other protocols, such as HTTP and VNC, may be forwarded easily.[15]

In addition, some third-party software includes support for tunnelling over SSH. These include DistCC, CVS, rsync, and Fetchmail. On some operating systems, remote file systems can be mounted over SSH using tools such as sshfs (using FUSE).

An ad hoc SOCKS proxy server may be created using OpenSSH. This allows more flexible proxying than is possible with ordinary port forwarding.

Beginning with version 4.3, OpenSSH implements an OSI layer 2/3 tun-based VPN. This is the most flexible of OpenSSH's tunnelling capabilities, allowing applications to transparently access remote network resources without modifications to make use of SOCKS.[16]


In the case of using default configuration, the attacker's success probability for recovering 14 bits of plaintext is 2−14.[17] The OpenSSH 5.2 release modified the behavior of the OpenSSH server[18][19] to further mitigate against this vulnerability.


In February 2001, Tatu Ylönen, Chairman and CTO of SSH Communications Security informed the OpenSSH development mailing list, that after speaking with key OpenSSH developers Markus Friedl, Theo de Raadt, and Niels Provos, the company would be asserting its ownership of the "SSH" and "Secure Shell" trademarks. Ylönen commented that the trademark "is a significant asset ... SSH Communications Security has made a substantial investment in time and money in its SSH mark"[20] and sought to change references to the protocol to "SecSH" or "secsh", in order to maintain control of the "SSH" name. He proposed that OpenSSH change its name in order to avoid a lawsuit, a suggestion that developers resisted. OpenSSH developer Damien Miller replied that "SSH has been a generic term to describe the protocol well before your [Ylönen's] attempt to trademark it" and urged Ylönen to reconsider, commenting: "I think that the antipathy generated by pursuing a free software project will cost your company a lot more than a trademark."[21]

At the time, "SSH," "Secure Shell" and "ssh" had appeared in documents proposing the protocol as an open standard and it was hypothesised that by doing so, without marking these within the proposal as registered trademarks, Ylönen was relinquishing all exclusive rights to the name as a means of describing the protocol. Improper use of a trademark, or allowing others to use a trademark incorrectly, results in the trademark becoming a generic term, like Kleenex or Aspirin, which opens the mark to use by others.[22] After study of the USPTO trademark database, many online pundits opined that the term "ssh" was not trademarked, merely the logo using the lower case letters "ssh." In addition, the six years between the company's creation and the time when it began to defend its trademark, and that only OpenSSH was receiving threats of legal repercussions, weighed against the trademark's validity.[23]

Both developers of OpenSSH and Ylönen himself were members of the IETF working group developing the new standard; after several meetings this group denied Ylönen's request to rename the protocol, citing concerns that it would set a bad precedent for other trademark claims against the IETF. The participants argued that both "Secure Shell" and "SSH" were generic terms and could not be trademarks.[24]

See also[edit]


  1. ^ "OpenBSD Secure Shell" name is mainly used in various sshd startup scripts.


  1. ^ a b "OpenSSH 7.1 Release Notes". 2015-08-20. Retrieved 2015-09-01. 
  2. ^ Venkatachalam, Girish (April 2007). "The OpenSSH Protocol under the Hood". Linux Journal (156): 74–77Accessed via the Discovery Database at LSU 
  3. ^ a b "Portable OpenSSH – Freecode". Retrieved 2014-02-11. 
  4. ^ "Open SSH Home Page". Retrieved 2 March 2015. 
  5. ^ "Open SSH Project". Retrieved 20 February 2015. 
  6. ^ "Project History and Credits". OpenBSD. Retrieved 2008-04-08. 
  7. ^ "OpenSSH: Project History and Credits". 2004-12-22. Retrieved 2014-04-27. 
  8. ^ "OpenSSH 7.0 Release Notes". 2015-08-11. Retrieved 2015-08-18. 
  9. ^ "OpenSSH 6.9 Release Notes". 2015-07-01. Retrieved 2015-08-12. 
  10. ^ Murenin, Constantine A. (2015-02-01). Soulskill, ed. "OpenSSH Will Feature Key Discovery and Rotation For Easier Switching To Ed25519". Slashdot. Retrieved 2015-02-01. 
  11. ^ Murenin, Constantine A. (2014-04-30). Soulskill, ed. "OpenSSH No Longer Has To Depend On OpenSSL". Slashdot. Retrieved 2014-12-26. 
  12. ^ Miller, Damien (2013-12-02). "ssh/PROTOCOL.chacha20poly1305". BSD Cross Reference, OpenBSD src/usr.bin/. Retrieved 2014-12-26. 
  13. ^ Murenin, Constantine A. (2013-12-11). Unknown Lamer, ed. "OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein". Slashdot. Retrieved 2014-12-26. 
  14. ^ "OpenBSD manual pages: SSH". 2014-07-03. Retrieved 2014-07-14. 
  15. ^ "OpenSSH FAQ (Frequently asked questions), Section 2.11. How do I use port forwarding?". 2012-04-21. Retrieved 2014-07-14. 
  16. ^ "OpenSSH 4.3 Release Notes". 2006-02-01. Retrieved 2014-07-14. 
  17. ^ OpenSSH Security Advisory CBC Attack
  18. ^ OpenSSH 5.2 Release Notes
  19. ^ Redhat Bug 472068 - (CVE-2008-5161) CVE-2008-5161 OpenSSH: Plaintext Recovery Attack against CBC ciphers
  20. ^ "'SSH trademarks and the OpenSSH product name' - MARC". 2001-02-14. Retrieved 2014-02-11. 
  21. ^ "'Re: SSH trademarks and the OpenSSH product name' - MARC". 2001-02-14. Retrieved 2014-02-11. 
  22. ^ "Ssh! Don't use that trademark - CNET News". Retrieved 2014-02-11. 
  23. ^ [1][dead link]
  24. ^ Duffy Marsan, Carolyn (2001-03-22). "Secure Shell inventor denied trademark request". Retrieved 2014-09-08. 

Further reading[edit]

External links[edit]