Mac 查看 SSH key

SSH(Secure Shell)是一种网络协议,即非常安全的shell,主要用于计算机间加密传输。SSH的主要目的是用来取代传统的 telnet 和 R 系列命令(rlogin、rsh、rexec 等)远程登录和远程执行命令的工具,实现对远程登录和远程执行命令加密,防止网络监听导致密码泄露的问发生。

1. 查看 Mac 上的 SSH key

最近在本地Git服务器上创建工程后,网页上提示:需要在其上添加client主机的SSH key,才能正常推拉代码。我用的是Mac,那怎样才能查看本机的SSH key呢?

打开终端,在终端中分别输入如下命令:

$ cd .ssh/
$ ls -al

红框中的文件,就存储着 SSH key:

读取文件内容,显示在控制台上,其中,以ssh-rsa... 开头完整字的符串就是的SSH key。

$ cat id_rsa.pub 

2. 与SSH 相关的概念

2.1 加密

加密是将一段数据处理之后,输出为一段外人无法或者很难破译的数据,只有指定的人可以解密。 一般来说,加密过程会有一个key,这个key作为加密的参数, 解密时也会用一个相关联的key作为输入。粗略来说是下面的流程:

加密方:encrypted_data = encrypt(raw_data, key)
解密方:raw_data = decrypt(encrypted_data, key1)

主流加密算法一般分为两类:

  • 对称加密(私钥加密)

对称加密就是加密方和解密方用的都是同一个key,这个key对于加密方和解密方来说是保密的,是不能让第三方知道的。第三方不知道私钥时,是很难将加密的数据解密的。一般来说是加密方先产生私钥,然后通过一个安全的途径来告知解密方这个私钥。

  • 非对称加密(公钥加密)

非对称加密需要解密的一方首先生成一对密钥,一个私钥(private key)一个公钥(public key),私钥留在本地不能泄露出去,而公钥则可以任意对外发布。用公钥进行加密获得的数据,只能用私钥才能解密。加密方首先从解密方获取公钥,然后利用这个公钥进行加密,把加密后的数据发送给解密方,解密方利用私钥进行解密。如果加密的数据在传输过程中被第三方截获,因为其没有私钥,也是没有办法进行解密的。

注意:
公钥加密的问题还包括获取了公钥之后,加密方如何保证公钥来自于确定的一方,而不是某个冒充的机器,这也就涉及到了公钥加密里面比较重要的一步 —— 身份验证
一般,对称加密都会比非对称加密效率高,所以大数据量的加密一般都会使用对称加密,而非对称加密会作为身份验证和交换私钥的一个手段

2.2 数据的一致性(完整性)

数据的一致性是指如何保证一段数据在传输的过程中没有被遗漏、破坏或者修改过。目前普遍的做法是对数据计算hash值(摘要算法),得到的hash值和数据一起传输,然后在收到数据的时候也对数据进行hash,将得到的hash值和传输过来的hash值进行比对,如果一样,则说明收到的数据是完整的,否则,是被修改过的。

目前流行的hash算法有MD5、SHA-1算法。

2.3 身份验证

身份验证是指判断一个人或者机器是不是由第三方冒充的(类似于https抓包中的代理)。在SSH里面,这个过程主要是通过公钥来完成的,服务器会维护一个公钥列表,保存的是它信任的机器上面的公钥,在进行SSH连接时,客户端送过来一个公钥,然后服务器就会在列表中进行查找,如果这个公钥在列表中存在,就说明这个客户端是允许进行连接的。

此处有个问题,那公钥会不会被截获???

3. SSH 的工作原理

SSH的机制大体是,本地客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH客户端,本地客户端再将密钥发回给服务端,到此为止,连接建立。服务端启动SSH服务器后,sshd进程运行并在默认的22端口进行监听。

SSH机制中安全验证方式包括,基于口令的安全验证(账号密码)和基于公钥钥的安全验证:

  • 密码认证缺点

    1. 密码容易被破解;
    2. 用户无法空密码登录;
    3. 多个人登录同一账户时,需所有用户都知道密码,并且容易泄露,修改密码极不便。
  • 公钥认证

    1. 允许空密码登录;
    2. 公钥,任何人都能看到,用户加密;
    3. 私钥,只有拥有者看到,用于解密;
    4. 多人登录同一账户时,可通过各自的公钥登录到系统的;
    5. 通过公钥加密的的密文使用私钥轻松解密,但根据公钥来猜测私钥十分困难。
3.1 基于公钥的认证过程

本地生成一对密钥,并把公钥放到需要访问的服务器上。如果需要连接到SSH服务器上,客户端软件就会向服务器发送请求,请求用本地的密钥进行安全验证,服务器收到请求后,先在该服务器上的主目录下寻找客户端的公钥,然后把它和客户端发来的公钥进行比较。如果一致,服务器就用这个公钥加密“质询”(challenge)并把它发送给客户端软件,客户端本地接收到“质询”之后,就可用本地的私钥解密再把它发给服务器,即建立连接。

SSH 的公钥认证利用了非对称加密的特性。服务器和客户端都各自拥有自己的公钥和密钥,如下:

Ac 客户端公钥
Bc 客户端私钥
As 服务器公钥
Bs 服务器私钥

在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。认证过程分为两个步骤:

1. 会话密钥(session key)生成
1)客户端请求连接服务器,服务器将 As 发送给客户端;
2)服务器生成会话ID(session id),设为 p,发送给客户端;
3)客户端生成会话密钥(session key),设为 q,并计算 r = p xor q;
4)客户端将 r 用 As 进行加密,结果发送给服务器;
5)服务器用 Bs 进行解密,获得 r;
6)服务器进行 r xor p 的运算,获得 q;
7)至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。

2. 认证
1)服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端;
2)客户端使用 Bc 解密 S(x) 得到 x;
3)客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥;
4)服务器计算 q + x 的 md5 值 m(q+x);
5)客户端将 n(q+x) 发送给服务器;
6)服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功。

3.2 基于公钥的加密过程

A和B,A想把一段明文通过双密钥加密后发送给B,B有一对公钥和私钥,加密解密过程:

  1. B将公钥发送给A
  2. A用B的公钥加密自己要发送的明文消息,然后传送给B
  3. B用自己私钥解密A的消息

基于公开密钥的认证过程:

身份认证和加密不同,只要身份认证,鉴别用户真伪。
只要鉴别用户的私钥是正确的,就可以鉴别身份真伪。

A和B两个用户,A想让B知道自己是真实的A,不是假冒的,因此身份认证过程:

  1. A用自己的私钥对文件加密,从而对文件签名,并将签名文件发送给B
  2. B用A的公钥解密文件,从而验证签名,完成身份认证过程

再是文件加密解密过程:同上(需完成两次验证)

4. SSH 建连过程抓包

主要包括以下步骤:

  • TCP 三次握手
  • SSH 协议版本协商
  • 客户端与服务端的公钥交换
  • 加密算法协商
  • 客户端使用对称加密的密钥认证
  • 客户端与服务端安全通信

我使用 wireshark 抓包并查看了一下其 SSH 的建连过程,如下:

ssh作为工具是分为服务端和客户端的,在服务端它是 sshd,一般占用 22 端口。我们平常使用的是其客户端,一般用法为 ssh user@host,然后根据 ssh 的提示,我们输入密码后登陆到服务器。

参考文章:
http://www.voidcn.com/article/p-ppggwxwc-or.html
https://www.it610.com/article/3352318.htm

SSH公钥、私钥的基本概念
SSH简介及公钥、私钥的基本概念
SSH 的公钥与私钥
数字证书、公钥、私钥概念
公钥、私钥、证书的基本概念和使用
转载 公钥、私钥、证书的基本概念和使用
SSH 公钥私钥认证
公钥,私钥和数字证书基本概念
公钥私钥
公钥/私钥

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

推荐阅读更多精彩内容