OpenSSH(OpenBSD Secure Shell)是使用SSH透过计算机网络加密通信的实现。它是取代由SSH Communications Security所提供商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子项目。
OpenSSH常常被误认以为与OpenSSL有关系,但实际上这两个项目有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通信软件。
历史
OpenSSH是在1999年10月第一次在OpenBSD 2.6里出现,当初的项目是取代由SSH Communications Security所提供的SSH软件。
发展及程序架构
程序主要包括了几个部分:
- ssh
- rlogin与Telnet的替代方案。
- scp、sftp
- rcp的替代方案,将文件复制到其他电脑上。
- sshd
- SSH服务器。
- ssh-keygen
- ssh-agent、ssh-add
- 帮助用户不需要每次都要输入密钥密码的工具。
- ssh-keyscan
常见用法
ssh -V #查看版本
一般在个人主目录下的.ssh子目录中的authorized_keys文件为公钥,可用于ssh通过公私秘钥认证方式登录操作系统。
ssh会把访问过的主机的公钥(public key)记录在~/.ssh/known_hosts
。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免受到DNS Hijack之类的攻击。
通过ssh可以直接远程执行目标机上的命令行: ssh username@host "command_line"
注意使用单引号或者双引号把命令行包围起来(还可以多行输入)。如果被执行的命令行需要与用户交互(需要 TTY),应该使用-t
选项,例如 ssh -t username@host "command_line"
通过ssh可以远程执行本地脚本,如 ssh username@host < my.sh
,但在Windows上暂时可能不行。如果本地脚本带有命令行参数,需要如此格式: ssh username@host 'bash -s' < my.sh helloworld
通过ssh可以远程执行远程主机上的脚本,如 ssh username@host /home/nick/test.sh arg1 arg2
注意,此时需要指定脚本的绝对路径!
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端口
另请参阅
参考文献
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.