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

OpenSSH 是一个志愿者项目,旨在制作高质量的软件。为此,项目依赖于硬件和现金捐赠来持续运作。资金用于日常运营,包括网络线路订阅和电费等开销。如果 2015 年每次从主站下载 OpenSSH 源代码时捐赠两美元(忽略镜像站),或者每安装一次 PF 或 OpenSSH(例如与主流操作系统或手机一起安装时)捐赠一分钱,那么年度的资金目标就能达成。开发所需的硬件也是通过捐赠获得的,新的架构和平台移植总是需要新的硬件。

OpenSSH 目前由两个团队开发。第一个团队致力于提供尽可能干净、简洁和安全的代码,属于 OpenBSD 项目的一部分。第二个团队则基于此核心版本,将其移植到众多其他操作系统。因此,OpenSSH 有两个开发轨迹:OpenBSD 核心版本和可移植版本。所有的工作都在允许加密出口的国家进行。

使用源代码,Luke

OpenSSH 的主开发分支是 OpenBSD 项目的一部分。因此,查看 OpenBSD "-current" 分支的源代码是获取最新活动的地方。OpenSSH 的每日更新、最前沿的快照可以通过 OpenBSD 的 CVS 树公开获取。尽可能使用镜像站点进行下载。

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

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

我们请所有希望报告 OpenSSH 安全漏洞的人使用源代码中提供的联系方式,并遵循负责任的漏洞披露实践。

libssh

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

libssh 采用 LGPL 2.1 许可证,详细信息请访问官方网站:https://www.libssh.org/

功能:

  • 密钥交换方法curve25519-sha256@libssh.org、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、zlib@openssh.com、none
  • MAC 哈希:hmac-sha1、none
  • 认证方式:none、password、public-key、hostbased、keyboard-interactive、gssapi-with-mic
  • 通道:shell、exec(包括 SCP 封装)、direct-tcpip、subsystem、auth-agent-req@openssh.com
  • 全局请求:tcpip-forward、forwarded-tcpip
  • 通道请求:x11、pty、exit-status、signal、exit-signal、keepalive@openssh.comauth-agent-req@openssh.com
  • 子系统:sftp(版本 3)、publickey(版本 2)、OpenSSH 扩展
  • SFTPstatvfs@openssh.comfstatvfs@openssh.com
  • 线程安全:只需不要共享会话
  • 非阻塞:可以同时支持阻塞和非阻塞模式
  • 自定义套接字:应用程序可以交给 libssh 使用套接字,也可以使用 libssh 自带的套接字
  • OpenSSL 或 gcrypt:支持这两种构建方式

额外功能:

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

libssh2

libssh2 是另一个独立的项目,提供了一个精简的 C 库,用于实现 SSH2 协议,以便将特定的 SSH 功能嵌入到其他工具中。它拥有一个稳定且文档完备的 API,支持在客户端侧处理不同的 SSH 子系统:Session、Userauth、Channel、SFTP 和 Public Key。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 (rijndael-cbc@lysator.liu.se)、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 (hmac-ripemd160@openssh.com)、或不使用
  • 通道:Shell、Exec(包括 SCP 封装)、直接 TCP/IP、子系统
  • 通道请求:x11、pty
  • 子系统:sftp 版本 3、public-key 版本 2
  • 线程安全,支持阻塞或非阻塞 API
  • 套接字管理:应用程序交给 libssh2 使用套接字,调用 select() 等
  • 支持构建:支持 OpenSSL 或 gcrypt

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

Thrussh

Thrussh 是用 Rust 编写的 SSH 库,采用 Apache 许可证 2.0 版本。它是 SSH2 协议的完整实现。唯一的非 Rust 部分是加密后端,使用的是 ring 库。它旨在在任何平台上运行,并使用异步 I/O。项目网站包含文档、源代码和示例。代码可通过 darcs 访问:

darcs get https://pijul.org/thrussh

Thrussh 不是实际的服务器或客户端实现,而是提供了编写自定义客户端和服务器所需的所有元素,使用 Rust 编写。

其他语言的 SSH 协议绑定

以下是按编程语言划分的 SSH 协议相关的其他独立资源列表:

Perl

  • Net::SSH2:libssh2 的封装模块。
  • Net::SSH::Perl:一个纯 Perl 实现的完整 SSH/SFTP。遗憾的是,该模块不再维护,并且存在一些已知 bug,安装也可能比较困难。
  • Net::OpenSSH:用于 OpenSSH 二进制文件的封装模块,支持如 scp、rsync、sshfs 等功能。它使用 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::SSH2、Net::SSH::Perl 和 Net::OpenSSH 已经本地支持通过 scp 进行文件传输。
  • Net::SFTP::Foreign:一个用 Perl 编写的完整 SFTP 客户端,具有很多额外功能。默认情况下,它使用 ssh 连接远程主机,但也可以运行在 Net::SSH2 或 Net::OpenSSH 上。
  • GRID::MachineIPC::PerlSSHSSH::RPC:这些模块允许通过 SSH 在远程机器上分发和运行 Perl 代码。

Python

Ruby

Java

Last modified: Sunday, 19 January 2025, 9:45 PM