OpenSSH
"Keeping your communiqués secret" | |
| 開發者 | OpenBSD計畫組 |
|---|---|
| 首次发布 | 1999年12月1日 |
| 当前版本 | 10.1[1] |
| 源代码库 | |
| 编程语言 | C语言 |
| 操作系统 | 跨平台[2] |
| 标准 | RFC 4250, RFC 4251, RFC 4252, RFC 4253, RFC 4254, RFC 4255, RFC 4256, RFC 4335, RFC 4344, RFC 4345, RFC 4419, RFC 4462, RFC 5656, RFC 6594, RFC 6668, RFC 7479[3] |
| 类型 | 远程访问 |
| 许可协议 | 简化版BSD许可证 ISC許可證 公共领域 |
| 网站 | www |
OpenSSH(OpenBSD Secure Shell)是使用SSH通过計算機網路进行加密通訊的實現。它是取代由SSH Communications Security开发的商用版本的開放原始碼方案。目前OpenSSH是OpenBSD的一个子計畫。
OpenSSH常常被誤認為與OpenSSL有關聯,但實際上這兩個計畫有不同的目的,不同的發展團隊,名稱相近只是因為兩者有同樣的軟體發展目標──提供開放原始碼的加密通訊軟體。
歷史
[编辑]OpenSSH第一次出現是1999年10月随OpenBSD 2.6发布,最初是为了取代由SSH Communications Security所提供的SSH軟體。
發展及程式架構
[编辑]程式主要包括了幾個部份:
- ssh
- scp、sftp
- rcp的替代方案,將檔案複製到其他電腦上。
- sshd
- SSH伺服器。
- ssh-keygen
- ssh-agent、ssh-add
- 安全地存储密钥,使用户无需在每次使用密钥时都輸入金鑰密碼。
- ssh-keyscan
常见用法
[编辑]公钥通常位于用户家目录下的.ssh子目录中的authorized_keys文件。
ssh会把访问过的主机的公钥(public key)记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免受到DNS Hijack之类的攻击。
通过ssh可以直接在远程执行命令:ssh username@host "command_line" ,但注意需要使用单引号或者双引号把命令行包起来。如果要执行不在PATH环境变量里的命令,需要使用绝对路径。如果被执行的命令行需要与用户交互(需要 TTY),应该使用-t选项,例如 ssh -t username@host "command_line"
通过ssh也可以远程执行本地脚本,如 ssh username@host < my.sh ,但在Windows上可能会遇到问题。如果本地脚本带有命令行参数,需要使用类似这样的格式:ssh username@host 'bash -s' < my.sh helloworld
SSH的用户config文件
[编辑]在用户家目录下的.ssh子目录中的config文件。示例:
# configuration 1
Host cluster
HostName 192.168.11.11
User tom
# configuration 2
Host=aliyun
Hostname=202.44.2.2
User tom
每项配置都应符合参数名 参数值或参数值=参数名的形式,可以混用。参数名不区分大小写,参数值区分大小写。
- Host:主机的昵称。可用于在ssh命令行中代替 username@ip_address
- HostName:主机的地址。IP地址、主机名或域名。
- User: ssh登录时使用的用户名。
- IdentityFile:私钥文件。默认为
~/.ssh/id_rsa或~/ssh/id_dsa。 - Port:SSH访问主机的端口号。默认为22。
另请参阅
[编辑]参考文献
[编辑]- ^ 1.0 1.1 OpenSSH 10.1. 2025年10月6日 [2025年10月6日].
- ^ OpenSSH Portable Release. OpenBSD. [15 October 2015]. (原始内容存档于2018-02-16).
- ^ Specifications implemented by OpenSSH. The OpenBSD Project. The OpenBSD Project. [14 October 2015]. (原始内容存档于2018-01-25).