zoukankan      html  css  js  c++  java
  • SSH协议

    SSH是一种协议,实现计算机之间的加密登录,即使被截获,截获的也只是加密后的密文,不会泄密。

    如果每次登录另外一台计算机,都需要输入密码,就显得太麻烦,所以SSH协议实现了无密码登录,即公钥登录。所谓公钥登录,就是用户先把自己的公钥发给远程主机存储起来,登录时,远程主机向登录主机发送一个随机的字符串,登录主机用自己的私钥加密后发给远程主机,远程主机用登录主机的公钥解密,如果成功,则说明是可信的,不需要输入密码就可以登录。

    如果主机A和B想实现相互之间的无密码登录,操作步骤如下:

    1. 分别生成密钥

    ssh-keygen -t rsa

    一直回车,会在/home/${username}/.ssh目录下生成公钥(id_rsa.pub)和私钥(id_rsa),将其中的公钥命名为authorized_keys_${hostname}。

    2. 主机B使用scp将自己的公钥发到主机A的/home/${username}/.ssh目录下,主机A将自己的公钥和主机B的公钥合并成一个文件authorized_keys:

    cat autharized_keys_A >> autharized_keys;
    cat autharized_keys_B >> autharized_keys;

    并且将authorized_keys发到主机B的/home/${username}/.ssh目录下,这样主机A和B就有了对方的公钥,可以实现无密码登录了。

    3. 在主机A使用

    ssh B

    登录主机B,第一次提示主机B的公钥指纹,是否继续登录。所谓公钥指纹,就是将主机的1024位RSA公钥进行MD5计算,得到一个128位的指纹。如果用户知道登录主机的公钥指纹,就可以核对,如果是正确的,就输入yes,然后输入密码登录。当用户输入yes时,则会将主机的公钥存储在/home/${username}/.ssh/known_hosts中,下次登录时,就不会再有这个提示,而是直接实现无密码登录了。

    如果第一次以后仍然要求输入密码,可能是.ssh文件的权限问题,输入:

    chown username: /home/username/.ssh  
    chown username: /home/username/.ssh/*  
    chmod 700 /home/username/.ssh  
    chmod 600 /home/username/.ssh/*

    改变权限就不会再提示输入密码了。

    如果出现:

    Agent admitted failure to sign using the key

    将私钥加入即可:

    ssh-add   ~/.ssh/id_rsa
  • 相关阅读:
    ICC_lab总结——ICC_lab1:数据设置和基本流程
    数字集成电路物理设计学习总结——时钟树综合
    数字集成电路物理设计学习总结——布图规划和布局
    Sublime Text 最佳插件列表
    Eclipse中10个最有用的快捷键组合
    MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
    XML回顾
    Day05_JAVAEE系列:XML
    Day05_JAVAEE系列:Junit
    Git命令
  • 原文地址:https://www.cnblogs.com/mstk/p/6548687.html
Copyright © 2011-2022 走看看