zoukankan      html  css  js  c++  java
  • ssh原理【转】

    1 转自

    http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

    2 ssh远程登陆的原理

    普通用户远程登陆

    ssh jason@host

    root用户远程登陆

    ssh root@host

    如果本地用户名和远程用户名相同,可以直接ssh  host

    当openssh服务器收到远程登陆请求的时候,它会把自己的公钥发送给发起请求的机器,发起请求的机器用该公钥对该用户密码进行加密,然后发送给openssh服务器,openssh服务器用自己的私钥解密,然后比对密码,如果一样,那么就允许该用户远程登陆,否则登陆失败。

    普通用户直接登录即可,但是root用户需要配置一下:

    修改/etc/ssh/sshd_config的PermitRootLogin为yes,然后重启一下sshd服务。

    3 中间人攻击

    这个远程登陆过程看起来高明,但是存在一个缺陷,那就是中间人攻击。

    如果登陆请求被中间人截获,它可以模拟服务器发一个自己的公钥过来,那么密码就被它窃取了。

    避免中间人攻击的方法,官方服务器公示自己的公钥,然后在用户第一次登陆的时候,会有提示:

    ECDSA key fingerprint is SHA256:e27/UCrQmDnO06Fc7gP/2ixI5lkFaG9hNXtcXqRmmq8.
    Are you sure you want to continue connecting (yes/no)? yes
    如果对上了,那么就说明可以安全的用这个公钥加密密码了,因为就算被中间人窃取了,他也解密不了,因为他没有私钥。

    4 无秘钥ssh登陆的原理

    想要登陆方也生成一对秘钥,他将自己的公钥放到被登陆的服务器上,然后发起登陆请求,被登陆的服务器发送一段随机字符串给他,他用自己的私钥加密,然后回复给被登陆服务器,被登陆服务器用公钥解密,如果是正确的,就允许登陆。由于只有可信的用户才能放公钥到被登陆的服务器,因此整个过程是可信的。

    命令:

    生成公钥,ssh-keygen

    向被登陆机器发送公钥,ssh-copy-id user@host

  • 相关阅读:
    win7下配置pfn

    转(每天淘汰你自己)
    [asp]替换连续多个回车换行
    安装windows组件 提示 无法加载安装安装程序:Wbemupgd.dll
    asp.net三层结构例子
    sql2005下读取字段属性
    discuz数据表结构
    Ajax2.0 'Sys'未定义的解决办法
    .net(c#)读取flash(swf)文件的尺寸
  • 原文地址:https://www.cnblogs.com/hustdc/p/8638847.html
Copyright © 2011-2022 走看看