SSH、OpenSSH、 SSL、OpenSSL

800 阅读2分钟

SSH

Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议

OpenSSH

是SSH协议的免费开源实现

SSL

Secure Sockets Layer的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密

OpenSSL

SSL的开源实现 绝大部分HTTPS请求等价于:HTTP + OpenSSL

OpenSSH的加密就是通过OpenSSL完成的

SSH的版本

  • SSH协议一共2个版本
    • SSH-1
    • SSH-2

现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信

查看SSH版本(查看配置文件的Protocol字段)

客户端:/etc/ssh/ssh_config

服务端:/etc/ssh/sshd_config

SSH的通信过程

SSH的通信过程可以分为3大主要阶段
  • 建立安全连接

  • 在建立安全连接过程中,服务器会提供自己的身份证明

  • 如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器

  • 客户端认证

    • SSH-2提供了2种常用的客户端认证方式

      • 基于密码的客户端认证

        • 使用账号和密码即可认证
      • 基于密钥的客户端认证

        • 免密码认证

        • 最安全的一种认证方式

      • 在客户端生成一对相关联的密钥(Key Pair):一个公钥(Public Key),一个私钥(Private Key)

        • ssh-keygen

          • 一路敲回车键(Enter)即可
          • OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型
          • 生成的公钥:~/.ssh/id_rsa.pub
          • 生成的私钥:~/.ssh/id_rsa
      • 把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部

        • ssh-copy-id root@服务器主机地址

          • 需要输入root用户的登录密码
          • ssh-copy-id会将客户端~/.ssh/id_rsa.pub的内容自动追加到服务器的~/.ssh/authorized_keys尾部
      • 注意:由于是在~文件夹下操作,所以上述操作仅仅是解决了root用户的登录问题(不会影响mobile用户)

      • SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试“密码认证”

      公钥 >> 授权文件
    • 可以使用ssh-copy-id将客户端的公钥内容自动追加到服务器的授权文件尾部,也可以手动操作

      • 复制客户端的公钥到服务器某路径 scp ~/.ssh/id_rsa.pub root@服务器主机地址:~

        • scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上
        • 上面的命令行将客户端的~/.ssh/id_rsa.pub拷贝到了服务器的~地址
      • SSH登录服务器 ssh root@服务器主机地址

        • 需要输入root用户的登录密码
      • 在服务器创建.ssh文件夹

        • mkdir .ssh
      • 追加公钥内容到授权文件尾部

        • cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
      • 删除公钥

        • rm ~/id_rsa.pub
  • 数据传输