zoukankan      html  css  js  c++  java
  • ssh主机互信

    SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。

    $ ssh user@host

    如果在hosts文件中配置了别名,就可以直接使用别名登录了。

    SSH之所以能够保证安全,原因在于它采用了公钥加密。

    整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

    使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

    所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

    这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:

     $ ssh-keygen

    重要参数解析:

    -t:指定加密方式,有四种“dsa”, “ecdsa”, “ed25519”, or “rsa”,一般用rsa.

    -P:提供(旧)密码短语.

    -f:指定密钥文件名。可以使用绝对路径也可以使用相对路径,但文件必须放在登陆用户的家目录的.ssh/目录中。不提供此参数,默认放在家目录的.ssh/下面。

    在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

    这时再输入下面的命令,将公钥传送到远程主机host上面:

    $ ssh-copy-id user@host

    如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。

      RSAAuthentication yes
      PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys

    然后,重启远程主机的ssh服务

    // ubuntu系统
      service ssh restart

    远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

    这里不使用上面的ssh-copy-id命令,改用下面的命令,解释公钥的保存过程:

      $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

    这里只是完成了本地机免密登录远程主机。

    假设要配置几台主机之间的互信。

    那就在每台主机下面都生成秘钥文件:

     $ ssh-keygen -t rsa -P ' ' -f 'id_rsa'

    然后把每台主机的公钥互相追加保存在每台主机的 .ssh/authorized_keys 文件中。

    最后也可以给主机起个别名保存在/etc/hosts 文件中

    比如192.168.2.100 node1

      192.168.2.101 node2

    这样就可以用别名登录了

    ssh node1
  • 相关阅读:
    Python——str(字符串)内部功能介绍
    Python网络编程——设定并获取默认的套接字超时时间
    Python网络编程——主机字节序和网络字节序之间的相互转换
    Python网络编程——通过指定的端口和协议找到服务名
    python网络编程——将IPv4地址转换成不同的格式
    Python网络编程——获取远程设备的IP地址
    Python网络编程——设备名和IPv4地址
    Python+Flask+MysqL的web建设技术过程
    管理信息系统 第三部分 作业
    模型分离(选做)
  • 原文地址:https://www.cnblogs.com/wonchaofan/p/13493942.html
Copyright © 2011-2022 走看看