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

  • 相关阅读:
    [导入]C#播放rm文件[转贴]
    新工具软件发布!名称:剪切板记录器
    黑發4/14
    sql20002 4/19
    頁面按百分比設定失調3/27
    廣告控件:AdRotator 3/23
    19992020小農曆JS 3/31
    ASP.NET1.1編譯錯誤代碼:1073741502 4/10
    SiteMapPath控件 3/24
    MYSQL時間問題4/16
  • 原文地址:https://www.cnblogs.com/hustdc/p/8638847.html
Copyright © 2011-2022 走看看