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
  • 相关阅读:
    select + 回调 + 事件循环
    进程间通信
    多进程复习
    concurrent.futures 使用及解析
    多线程复习 Rlock ,Condition,Semaphore
    生成器读取大文件应用
    VS远程调试与附加调试
    Linux后台有个systemd-r进程,占用5355等端口
    linux中 shell编程 判断服务是否运行
    使用Keepalived实现linux高可用集群
  • 原文地址:https://www.cnblogs.com/mstk/p/6548687.html
Copyright © 2011-2022 走看看