OpenSSH/開發
可以透過捐贈硬體或資金來推動 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/ 上獲得。
特性
- 金鑰交換方法: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、無
- MAC 雜湊:hmac-sha1、無
- 身份驗證:無、密碼、公鑰、基於主機、鍵盤互動式、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.com、auth-agent-req@openssh.com
- 子系統:sftp(版本 3)、publickey(版本 2)、OpenSSH 擴充套件
- SFTP:statvfs@openssh.com、fstatvfs@openssh.com
- 執行緒安全:不要共享會話
- 非阻塞:它既可以用於阻塞也可以用於非阻塞
- 您的套接字:應用程式接管套接字,或使用 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(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、公鑰版本 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 編寫自定義客戶端和伺服器的必要元素。
以下是按程式語言列出的其他獨立資源
- Net::SSH2: libssh2 的包裝模組。
- Net::SSH::Perl: 純 Perl 中的完整 SSH/SFTP 實現。不幸的是,此模組不再維護,並且存在一些未解決的錯誤。此外,由於某些依賴項,安裝它可能是一項艱鉅的任務。
- 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::SCP 和 Net::SCP::Expect: 包裝 scp 程式的模組。請注意,Net::SSH2、Net::SSH::Perl 和 Net::OpenSSH 已經原生支援透過 scp 傳輸檔案。
- Net::SFTP::Foreign: 用 Perl 編寫的完整 SFTP 客戶端,具有許多功能。預設情況下,它使用 ssh 連線到遠端機器,但它也可以在 Net::SSH2 和 Net::OpenSSH 之上執行。
- GRID::Machine、IPC::PerlSSH 和 SSH::RPC: 這些模組允許透過 SSH 在遠端機器上分發和執行 Perl 程式碼。
JSch - 純 Java 實現的 SSH2。
- ↑ "OpenBSD 基金會 2016 年籌款活動". OpenBSD 基金會. 2016. 檢索於 2016-03-07.