SSH

什么是 SSH?

  • SSH是一种网络协议,用于计算机之间的加密登录
  • 最早的时候,互联网通信都是明文,一旦被截获内容就会泄漏,SSH将加密登录信息,即使中途被捕获,密码也不会泄漏

基本的用法

  • SSH主要用于远程登录,如果你要以用户名user登录远程主机host
ssh user@host
  • 如果本地用户名与远程用户名一致,可以省略用户名
  • SSH默认端口是22,使用p参数,可以修改端口
ssh -p 222 user@host

中间人攻击

  • SSH之所以能保证安全,原因在于它采用的公钥加密
    • 远程主机收到用户的登录请求,把自己的公钥发给用户
    • 用户使用这个公钥,将登陆密码加密后,发给远程主机
    • 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录
  • 这个过程本身是安全的,但存在一个风险,如果有人截获了登录请求,冒充远程主机,伪造公钥发给用户,那么用户是难以分辨真伪的,因为不像https协议,ssh的公钥没有在证书中心CA认证
  • 可以设想,如果攻击者插在用户和远程主机之间(如wifi区域),用伪造的公钥,获取用户登录密码,再用这个密码登录远程主机,那么SSH安全机制就失效了

口令登录

  • 如果是第一次登录对方主机,系统会出现下面提示
image.png
  • 意思是无法确认host主机的真实性,只知道它的公钥指纹,还继续连接嘛?
  • 所谓的“公钥指纹”是指公钥长度较长(这里采用RSA算法,长达1024位),很难对比,所以进行MD5算法,将它变成128位的指纹,上面例子中是:98....4d,在比较就容易多了
  • 远程主机需要在自己网站上贴出公钥指纹,以便用户核对,当用户确认该指纹后再输入密码登录
  • 当远程主机公钥被接收后,它会保存在 $HOME/.ssh/known_hosts 之中,下次登录这台主机时则跳过警告,系统也会保存一些可信赖的远程主机公钥,通常在 /etc/ssh/ssh_known_hosts 文件中

公钥登录

  • 使用密码登录,每次都必须输入密码,很麻烦,SSH提供了公钥登录,可以省去密码步骤
  • 所谓的“公钥登录”原理很简单,将用户自己的公钥存储在远程主机上,登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,在发送回去,远程主机用事先存储的公钥解密,如果成功,就证明用户可信。
  • 这种方法需要用户提供自己的公钥,可以通过:ssh-keygen 生成一个,运行命令后,可以一路回车,其中又一个问题是,要不要对私钥设置口令,若担心安全问题可以设置一个。运行结束后在 $HOME/.ssh/ 目录下会有两个文件:id_rsa.pub 和 id_rsa,前者是公钥,后者私钥
  • 通过:ssh-copy-id user@host 将公钥上传到远程主机,若不行,则打开远程主机 /etc/ssh/sshd_config 文件将这几行代码#去掉
image1.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group...
    shuff1e阅读 5,757评论 1 11
  • ** SSH(安全外壳协议) **为 Secure Shell 的缩写,由 IETF 的网络小组(Network ...
    linfree阅读 4,292评论 4 7
  • SSH的原理与应用 一 SSH简介 SSH是Secure Shell的所写,也叫做安全外壳协议。SSH的主要目的是...
    传棋Jaking阅读 3,184评论 0 0
  • SSH是每一台Linux电脑的标准配置 随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的适用范围也...
    louyw阅读 5,687评论 1 0
  • 1.angularJs 简介 2.angularJs 运行原理 启动方式四个重要方法:1.angular.boot...
    wuliJJ阅读 3,218评论 0 1

友情链接更多精彩内容