SSH 相关知识

SSH登陆的原理

1. 什么是SSH

SSH(安全外壳协议)为 Secure Shell 的缩写,一种网络协议,用于计算机之间的加密通信。

2. 公钥Public Key与私钥Private Key

SSH Key

SSH需要生成公钥Public Key和私钥Private Key, 常用的是使用RSA算法生成id_rsa.pub和id_rsa。

公钥Public Key(id_rsa.pub)是可以暴露在网络传输上的,是不安全的。而私钥Private Key(id_rsa)是不可暴露的,只能存在客户端本机上。
所以公钥Public Key(id_rsa.pub)的权限是644,而私钥Private Key(id_rsa)的权限只能是600。如果权限不对,SSH会认为公钥Public Key(id_rsa.pub)和私钥Private Key(id_rsa)是不可靠的,就无法正常使用SSH登陆了。

同时在服务端会有一个~/.ssh/authorized_keys文件,里面存放了多个客户端的公钥Public Key(id_rsa.pub),就表示拥有这些Public Key的客户端就可以通过SSH登陆服务端。

3. SSH公钥登录过程

客户端发出公钥登陆的请求(ssh user@host)
服务端返回一段随机字符串
客户端用私钥Private Key(id_rsa)加密这个字符串,再发送回服务端
服务端用~/.ssh/authorized_keys里面存储的公钥Public Key去解密收到的字符串。如果成功,就表明这个客户端是可信的,客户端就可以成功登陆

由此可见,只要多台电脑上的的公钥Public Key(id_rsa.pub)和私钥Private Key(id_rsa)是一样的,对于服务端来说着其实就是同一个客户端。所以可以通过复制公钥Public Key(id_rsa.pub)和私钥Private Key(id_rsa)到多台电脑来实现共享登陆。

如何生成SSH key

  1. 在生成SSH key之前,避免可能把之前的key覆盖掉,首先可以检查以前的key是否存在,有则可以跳过第二步。(如何查看?直接在终端输入“ls ~/.ssh”查看里面是否有id_rsa和id_rsa.pub 文件)
  2. 生成SSH key很容易,只需要提供一个邮箱账号即可,切换到~/.ssh文件目录下,在终端输入:

    1
    $ ssh-keygen -t rsa -C "your_email@example.com"
  3. 将生成的id_rsa.pub文件内容复制到相应的网站里(比如公司服务器,Github,Coding等),提供一个很方便的拷贝语句

    1
    $ pbcopy < ~/.ssh/id_rsa.pub

测试SSH连接

$ ssh -T git@github.com

如果展示下诉信息,则说明SSH连接成功

1
2
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

扩展阅读

Jackson wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
如果你觉得我的文章还不错,欢迎打赏~