跳转到内容

OpenSSH/开发

100% developed
来自 Wikibooks,开放世界中的开放书籍

可以通过捐赠硬件或资金来推动 OpenSSH 的发展。有关详细信息,请访问 OpenSSH 项目网站 www.openssh.com

OpenSSH 是一个志愿者项目,其目标是制作高质量的软件。因此,它依赖于硬件和现金捐赠来维持项目的持续运行。资金用于日常运营,以支付网络线路订阅和电费。如果 2015 年从主站下载 OpenSSH 源代码的每个人都捐赠 2 美元,忽略镜像,或者如果 2015 年每安装一个 PF 或 OpenSSH 实例(使用主流操作系统或手机)都捐赠 1 美分,[1]那么当年的资金目标就能实现。硬件对于开发至关重要,并且将 OpenSSH 移植到新的架构和平台始终需要新的硬件。

OpenSSH 目前由两个团队开发。第一个团队致力于提供尽可能干净、简单和安全的代码。它是 OpenBSD 项目的一部分。第二个团队使用这个核心版本,并将它移植到许多其他操作系统。因此,存在两条开发路线,OpenBSD 核心和可移植版本。所有工作都在允许出口加密的国家进行。

使用源代码,卢克

[编辑 | 编辑源代码]

OpenSSH 的主要开发分支是 OpenBSD 项目的一部分。因此,OpenBSD “-current” 分支的源代码是查找最新活动的地方。因此,OpenSSH 本身的每日最新快照可从 OpenBSD 的 CVS 树 公开获得。尽可能使用镜像。

OpenSSH 可移植版本的源代码使用匿名 Git 发布,因此无需密码即可从只读存储库下载源代码。该存储库由 Damien Miller 提供并维护。

git://anongit.mindrot.org/openssh.git

我们要求任何希望报告 OpenSSH 安全漏洞的人员请使用源代码中提供的联系地址,并实行负责任的公开披露。

libssh 是一个独立的项目,它提供了一个多平台 C 库,为客户端和服务器实现实现 SSHv2 和 SSHv1 协议。使用 libssh,开发人员可以远程执行程序、传输文件并为远程应用程序使用安全且透明的隧道。

libssh 在 LGPL 2.1 许可下可用,可在网页 https://www.libssh.org/ 上获得。

特性

  • 密钥交换方法:[email protected]、ecdh-sha2-nistp256、diffie-hellman-group1-sha1、diffie-hellman-group14-sha1
  • 主机密钥类型:ecdsa-sha2-nistp256、ssh-dss、ssh-rsa
  • 密码:aes256-ctr、aes192-ctr、aes128-ctr、aes256-cbc、aes192-cbc、aes128-cbc、3des-cbc、des-cbc-ssh1、blowfish-cbc
  • 压缩方案:zlib、[email protected]、无
  • MAC 哈希:hmac-sha1、无
  • 身份验证:无、密码、公钥、基于主机、键盘交互式、gssapi-with-mic
  • 通道:shell、exec(包括 SCP 包装器)、direct-tcpip、subsystem、[email protected]
  • 全局请求:tcpip-forward、forwarded-tcpip
  • 通道请求:x11、pty、exit-status、signal、exit-signal、[email protected][email protected]
  • 子系统:sftp(版本 3)、publickey(版本 2)、OpenSSH 扩展
  • SFTP:[email protected][email protected]
  • 线程安全:不要共享会话
  • 非阻塞:它既可以用于阻塞也可以用于非阻塞
  • 您的套接字:应用程序接管套接字,或使用 libssh 套接字
  • OpenSSL 或 gcrypt:使用任一构建

附加特性

  • 客户端和服务器支持
  • SSHv2 和 SSHv1 协议支持
  • 支持 Linux、UNIX、BSD、Solaris、OS/2 和 Windows
  • 完整的 API 文档和教程
  • 使用每日测试的自动化测试用例
  • 基于 poll(2) 或 poll(2) 模拟的事件模型。


libssh2 是另一个独立的项目,它提供了一个精简的 C 库,实现 SSH2 协议,用于将特定的 SSH 功能嵌入到其他工具中。它具有稳定的、文档完善的 API,用于在客户端侧使用不同的 SSH 子系统:会话、用户身份验证、通道、SFTP 和公钥。API 可以设置为阻塞或非阻塞。代码使用严格的命名空间,与 C89 兼容,并使用常规的 GNU Autotools 构建。

libssh2 在修改后的 BSD 许可下可用。每个函数都在其自己的手册页中进行了说明。项目网站包含文档、源代码和示例:http://www.libssh2.org/

除了 IRC 频道之外,libssh2 还有一个邮件列表。该项目规模小,低调,并且像互联网的精神一样,是一个精英制度。数百个特定功能允许将特定活动和组件挑选出来并添加到应用程序中

  • Shell 和 SFTP 会话
  • 端口转发
  • 密码、公钥、基于主机的密钥和键盘交互式身份验证方法。
  • 密钥交换方法 diffie-hellman-group1-sha1、diffie-hellman-group14-sha1、diffie-hellman-group-exchange-sha1
  • 主机密钥类型:ssh-rsa 和 ssh-dss
  • 密码:aes256-ctr、aes192-ctr、aes128-ctr、aes256-cbc([email protected])、aes192-cbc、aes128-cbc、3des-cbc、blowfish-cbc、cast128-cbc、arcfour、arcfour128,或者不使用密码。
  • 压缩方案 zlib 或不使用压缩
  • 用于哈希的消息认证代码 (MAC) 算法:hmac-sha1、hmac-sha1-96、hmac-md5、hmac-md5-96、hmac-ripemd160([email protected]),或者根本不使用。
  • 通道:Shell、Exec - 包括 SCP 包装器、直接 TCP/IP、子系统
    • 通道请求:x11、pty
  • 子系统:sftp 版本 3、公钥版本 2
  • 线程安全、阻塞或非阻塞 API
  • 您的套接字:应用程序接管套接字,调用 select() 等。
  • 使用 OpenSSL 或 gcrypt 构建

另请参见支持 SFTP 和 SCP URL 的库 libcurl

Thrussh 是一个用 Rust 编写的 SSH 库,并在 Apache 许可证 2.0 版下可用。它是 SSH 2 协议的完整实现。唯一非 Rust 部分是加密后端,它使用 ring 而不是。它旨在适用于任何平台并使用异步 I/O。项目网站包含文档、源代码和示例。可以使用 darcs 访问代码

darcs get https://pijul.org/thrussh

它不是实际服务器或客户端的实现,而是包含所有用于使用 Rust 编写自定义客户端和服务器的必要元素。

SSH 协议的其他语言绑定

[编辑 | 编辑源代码]

以下是按编程语言列出的其他独立资源

  • Net::SSH2: libssh2 的包装模块。
  • Net::SSH::Perl: 纯 Perl 中的完整 SSH/SFTP 实现。不幸的是,此模块不再维护,并且存在一些未解决的错误。此外,由于某些依赖项,安装它可能是一项艰巨的任务。
  • Net::OpenSSH: OpenSSH 二进制文件和其他实用程序(scprsyncsshfs)的包装器。它使用 OpenSSH 多路复用功能来重用连接。
  • Net::OpenSSH::Parallel 是基于 Net::OpenSSH 构建的模块,它允许高效地并行传输文件并在多台机器上运行程序。
  • SSH::Batch 是基于 Net::OpenSSH 构建的另一个模块,它允许在多台主机上并行运行程序。
  • Net::SSH::Expect: 此模块使用 Expect 来驱动在 SSH 之上运行的交互式 shell 会话。
  • Net::SSH: 任何 SSH 客户端的简单包装器。它不支持密码身份验证,并且速度非常慢,因为它为每个调用的远程程序建立一个新的 SSH 连接。
  • Net::SCPNet::SCP::Expect: 包装 scp 程序的模块。请注意,Net::SSH2Net::SSH::PerlNet::OpenSSH 已经原生支持通过 scp 传输文件。
  • Net::SFTP::Foreign: 用 Perl 编写的完整 SFTP 客户端,具有许多功能。默认情况下,它使用 ssh 连接到远程机器,但它也可以在 Net::SSH2Net::OpenSSH 之上运行。
  • GRID::MachineIPC::PerlSSHSSH::RPC: 这些模块允许通过 SSH 在远程机器上分发和运行 Perl 代码。

Paramiko

Fabric

libssh2

TwistedConch

Net::SSH

Capistrano

Jaramiko

JSch - 纯 Java 实现的 SSH2。


参考文献

[编辑 | 编辑源代码]
  1. "OpenBSD 基金会 2016 年筹款活动". OpenBSD 基金会. 2016. 检索于 2016-03-07.

 

华夏公益教科书