热门问题
时间线
聊天
视角

OpenSSH

Secure Shell (ssh) 協定的客戶端與伺服器 来自维基百科,自由的百科全书

OpenSSH
Remove ads

OpenSSHOpenBSD Secure Shell)是使用SSH通过计算机网络进行加密通信的实现。它是取代由SSH Communications Security开发的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的一个子项目。

事实速览 开发者, 首次发布 ...

OpenSSH常常被误认为与OpenSSL有关系,但实际上这两个项目有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通信软件。

Remove ads

历史

OpenSSH第一次出现是1999年10月随OpenBSD 2.6发布,最初是为了取代由SSH Communications Security所提供的SSH软件。

发展及程序架构

程序主要包括了几个部分:

  • ssh
rlogin英语rloginTelnet的替代方案。
  • scpsftp
rcp的替代方案,将文件复制到其他电脑上。
  • sshd
SSH服务器。
  • ssh-keygen
生成RSAECDSA密钥,用于进行认证。
  • ssh-agentssh-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。

另请参阅

参考文献

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads