ssh工具,开发者必须有所了解

在我写《深入浅出HTTPS:从原理到实战》这本书的时候,想着密码学应用的重要性,很想讲一讲 SSH 协议,简单了解了下,感觉知识真的太多了,就废弃了这个想法,最近想弄一个东西,就简单看了下,从而形成本文,而且对程序员来说,理解 SSH 协议真的很有必要。

SSH是一个加密的网络协议,众所周知,TCP/IP协议族是不安全的,而SSH协议一定程度上弥补了这一缺失,让网络服务能够构建在相对安全的通道上,这就是它最大的作用。

SSH协议是一个B/S协议,有了SSH,就可以远程登录你的机器了,当然 Telnet 协议也能连接远程主机,只不过 Telnet 无法加密数据;另外 SSH 还能执行远程命令,类似于一个终端(可以替代 rlogin,rsh, rexec 协议),让它有了更大的发挥空间。

很多人意识不到 SSH 服务端的存在,原因就是大部分 Linux 发行版原生支持它,不用安装,紧密的和操作系统联系在一起,SSH 服务器一般绑定 22 端口。

SSH 协议有两个版本,分别是 SSH1 和 SSH2,不过主流是 SSH2 版本。SSH 协议在数据通信过程中,能够确保数据是加密的和完整的(请注意,安全的数据传输不能光是加密的,还要确保是完整的,加密是确保数据密文不会被破解,而完整是确保数据没有被篡改)。

SSH协议和HTTP协议都是B/S模型,但二者在应用架构上有很大的区别,HTTP协议是任何客户端都能连接服务器端,而SSH协议的客户端一般都具备SSH服务器端的操作权限,所以在连接之前必须进行验证,以便证明客户端拥有远程主机的权限。从密码学的角度看,是通过公开密钥协议进行验证的(public-key cryptography)。

验证方式主要有两种,一种是密码校验方式(虽然不安全,但对初学者来说,上手更快),另外一种就是使用密钥对的方式进行验证,关于这两种验证方式的原理和使用,我会专门写文章介绍。

那SSH主要运用在哪儿呢?上面已经说了一些,比如可以远程连接,远程运行命令,构建加密通道(一个 tunneling 协议)。尤其加密通道的功能让它有了很多的发挥空间,比如说通过 SSH 协议,你能构建一个私有网络(比如 VPN 协议,从原理上是可行的),另外很多网络服务(比如 FTP,CP,rsync)都可以使用 SSH 协议,比如 FTPS 协议,比如 SCP 协议,而 rsync 有了SSH模块后,功能也更强大了,能够更安全的备份数据了。

SSH协议还支持端口转发(forwarding TCP ports),可以弄出很多好玩的应用,比如我为了上网科学,浏览器代理 SOCKS 端口,然后 SOCKS 端口转发数据走 SSH 加密通道。

SSH协议通过一些方法(主要是 OpenSSH 工具)还能自动登录远程主机,主机管理非常方便。

那SSH协议和OpenSSL工具之间有什么联系呢?OpenSSH是SSH协议的一种实现,而且是最流行的一种实现,目前属于 OpenBSD 工程的一部分。可以认为SSH协议就是OpenSSH工具,现在大部分Linux发行版默认就安装了OpenSSH服务器端(sshd,一种 daemon 服务),当然 OpenSSH 有很多工具集,比如:

  • 远端操作工具,包括 ssh(客户端程序),scp,sftp
  • 密钥管理工具(客户端身份校验需要,讲ssh身份验证的时候会说),包括 ssh-add, ssh-keysign, ssh-keyscan, ssh-keygen。
  • 服务器端工具,包括 sshd,sftp-server,ssh-agent。

以前我常常搞混 OpenSSL 和 OpenSSH,因为它们都以 Open 开头,还以为是一回事。它们都是协议的一种实现,都和数据传输安全有关,也是互联网流行后出现的两种工具,都是密码学算法的组合应用,尤其 OpenSSL,除了是 TLS 协议的实现,还提供了很多密码学算法库,所以很多其他软件都会引用它,包括 OpenSSH 最初也使用了 OpenSSL 库(从 2014年开始后,逐步减少对OpenSSL库的依赖)。

另外二者使用的场景不一样,OpenSSL协议主要作用于 HTTPS 协议,而HTTPS(HTTP)协议节点之间都是互相不认识的,所以更加通用,只要你使用浏览器,多多少少就会知道。

而OpenSSH客户端一般都是远程主机的管理者,使用频率较少,除了程序员,大部分人会接触不到,但从功能上看,OpenSSH协议发挥空间更大,紧密和Linux联系在一起。

OpenSSH服务器端主要就是运行 sshd 程序,客户端的原生命令就是 ssh,在 Linux 上直接通过 ssh 就能连接远程主机了,Windows 10 也原生支持 OpenSSH 了,打开 cmd 命令行窗口直接能够运行 ssh 客户端命令了。

当然还有很多工具引入 OpenSSH 成为一个 ssh 客户端,但必须注意的是,这些工具还有其他附加的功能,不只是一个 ssh 客户端。

这些工具有 SecureCRT,Putty 等等,除了具备 ssh 核心功能,它们还是非常优秀的一个终端工具。

本文简单介绍了 SSH 协议的功能,对 SSH 有了基本的了解;还解释了 SSH 和 OpenSSH 工具之间的关系,同时简单理解 OpenSSH 和 OpenSSL 是不同的工具;当然 ssh 的通道和端口转发功能博大精深,后面还想继续学习学习,对于理解网络应用和解决实际的问题有很大的好处;如果能从原理上理解 SSH 协议的工作原理,那么对于掌握密码学算法会更有帮助;从使用的角度看,掌握 ssh 客户端验证方法会更加的实用,下一篇我会介绍下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容