SSH

作者: 聪明的奇瑞 | 来源:发表于2018-02-05 17:11 被阅读16次

    什么是 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

    相关文章

      网友评论

        本文标题:SSH

        本文链接:https://www.haomeiwen.com/subject/yljizxtx.html