zoukankan      html  css  js  c++  java
  • 实现SSH免密登录

    实现两台机器之间的免密登录

    为了运维的效率 有时会设置一台机器 可以免密登录其他部分主机。

    实验环境:

    主机A 192.168.100.200 用户root

    主机B 192.168.100.201 用户root

    主机C 192.168.100.202 用户osmgr

    目的:为了让主机A的root用户 可以免密登录主机B的root用户和主机C的osmgr用户

    操作步骤:

    1. 在主机A上 root用户下 生成公钥和私钥 默认下/root/下没有.ssh这个文件夹

      ssh-keygen -t rsa/dsa 这个命令会创建/root/.ssh/目录,并在该目录下创建两个文件id_rsa,id_rsa.pub

      id_rsa 密钥文件

      id_rsa.pub 公钥文件

    [root@Base01]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    /root/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    [root@Base01 .ssh]# ll
    -rw------- 1 root root  1679 Dec 14 11:26 id_rsa
    -rw-r--r-- 1 root root   393 Dec 14 11:26 id_rsa.pub
    [root@Base01 .ssh]# cat id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUZyOIhydUU42tT7JoUh8x8N4ftzd2NVIp/uIk+vxOYag7w0NC0dRX9evsiaF5Gnt8UHIwUuPilcwG5lZIqSqn2zmENrMpCRr4vh4bhroPkMiznKg3Kr6wA3mnIgjnmc/dCHo3eGuX8tyZZXVRrtjjeATNlAhQociUjhlc48LQFhqGNHv73th7IKKkcXDZMk+OSr2jtNfSy5q/meBMYD4OnTIZVGt0TYnKZVL4chaXoEjYqVU/SzHIGx+JJkkN/IW7Z7AeivIMv7JNiPeseWch4//+G0VXVoEabfHeU7qhWIDEkFB9/6p1j5y4mvxhWIkx3YgCbguJFWSDvDKsmxJB root@Base01
    
    
    1. 将主机A的公钥拷贝到主机B的root用户下和主机C的root用户和osmgr用户下

      可以使用两种方法:

      a.由于公钥文件id_rsa.pub是明文的 所以可以直接copy文件内容至对应用户家目录下

      主机A:
      [root@Base01 .ssh]# pwd
      /root/.ssh
      [root@Base01 .ssh]# ls
      id_rsa  id_rsa.pub  known_hosts
      [root@Base01 .ssh]# cat id_rsa.pub 
      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUZyOIhydUU42tT7JoUh8x8N4ftzd2NVIp/uIk+vxOYag7w0NC0dRX9evsiaF5Gnt8UHIwUuPilcwG5lZIqSqn2zmENrMpCRr4vh4bhroPkMiznKg3Kr6wA3mnIgjnmc/dCHo3eGuX8tyZZXVRrtjjeATNlAhQociUjhlc48LQFhqGNHv73th7IKKkcXDZMk+OSr2jtNfSy5q/meBMYD4OnTIZVGt0TYnKZVL4chaXoEjYqVU/SzHIGx+JJkkN/IW7Z7AeivIMv7JNiPeseWch4//+G0VXVoEabfHeU7qhWIDEkFB9/6p1j5y4mvxhWIkx3YgCbguJFWSDvDKsmxJB root@Base01
      
      主机B: 
      在主机/root/下 新建.ssh目录 如果存在这一步则跳过
      然后新建authorized_keys文件 将主机A的公钥拷贝过来
      要注意.ssh目录和authorized_keys文件的权限,前者是700,后者是600
      [root@docker01 ~]# cd /root/.ssh/
      [root@docker01 ~]# touch authorized_keys
      [root@docker01 .ssh]# ll
      total 4
      -rw------- 1 root root 393 Dec 14 14:06 authorized_keys
      [root@docker01 .ssh]# cat authorized_keys 
      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUZyOIhydUU42tT7JoUh8x8N4ftzd2NVIp/uIk+vxOYag7w0NC0dRX9evsiaF5Gnt8UHIwUuPilcwG5lZIqSqn2zmENrMpCRr4vh4bhroPkMiznKg3Kr6wA3mnIgjnmc/dCHo3eGuX8tyZZXVRrtjjeATNlAhQociUjhlc48LQFhqGNHv73th7IKKkcXDZMk+OSr2jtNfSy5q/meBMYD4OnTIZVGt0TYnKZVL4chaXoEjYqVU/SzHIGx+JJkkN/IW7Z7AeivIMv7JNiPeseWch4//+G0VXVoEabfHeU7qhWIDEkFB9/6p1j5y4mvxhWIkx3YgCbguJFWSDvDKsmxJB root@Base01
      

      b.使用ssh-copy-id命令

      针对主机C 使用ssh-copy-id命令
      在主机A上执行 ssh-copy-id osmgr@192.168.100.202命令
      主机A:
      [root@Base01 .ssh]# ssh-copy-id osmgr@192.168.100.202  //将root用户的公钥内容拷贝到192.168.100.202上osmgr家目录下的.ssh文件夹下的authorized_keys文件中.
      /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
      The authenticity of host '192.168.100.202 (192.168.100.202)' can't be established.
      ECDSA key fingerprint is SHA256:CmTnWB7CXjAc288vV5bv1SZO1KNkgSh46l3EMBUqIHk.
      ECDSA key fingerprint is MD5:f0:a7:55:a1:17:f6:83:c4:69:24:04:14:c1:70:3d:0c.
      Are you sure you want to continue connecting (yes/no)? yes
      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
      /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
      osmgr@192.168.100.202's password: 
      Permission denied, please try again.
      osmgr@192.168.100.202's password: 
      Number of key(s) added: 1
      Now try logging into the machine, with:   "ssh 'osmgr@192.168.100.202'"
      and check to make sure that only the key(s) you wanted were added.
      
      [root@Base01 .ssh]# ll //执行ssh-copy-id命令 还会将ssh目标主机ECDSA密钥指纹添加到主机的/root/.ssh/known_hosts中.下次再ssh连接目标主机的时候 就会校验ECDSA密钥指纹是否一致 不一致的话 就发出警告。
      total 12
      -rw------- 1 root root 1679 Dec 14 11:26 id_rsa
      -rw-r--r-- 1 root root  393 Dec 14 11:26 id_rsa.pub
      -rw-r--r-- 1 root root  177 Dec 14 11:34 known_hosts
      [root@Base01 .ssh]# cat known_hosts 
      192.168.100.212 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL3JnaKe0guEZv/G6DU6GZLyZ1q0nfx1Ya6Es1FlE59UgR+yobg0spNL/xb2A+cZ+TEdwcRRDD6TOyVEdPNAsdk=
      
      执行完ssh-copy-id命令之后 就可以免密登录192.168.100.202的osmgr用户,但是登录192.168.100.202的root用户 仍然需要密码
      [root@Base01 .ssh]# ssh 192.168.100.202
      root@192.168.100.212's password: 
      [root@Base01 .ssh]# ssh osmgr@192.168.100.202
      Last login: Mon Dec 14 11:38:58 2020 from 10.36.17.53
      [osmgr@git01 ~]$ 
      
      主机C: 
      主机C的变化 就是被动新建了一个/home/osmgr/.ssh/目录 并生成了一个authorized_keys文件 里面是主机A的公钥
      [root@git01 .ssh]# pwd
      /home/osmgr/.ssh
      [root@git01 .ssh]# ll
      total 4
      -rw------- 1 osmgr osmgr 393 Dec 14 13:23 authorized_keys
      [root@git01 .ssh]# cat authorized_keys 
      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUZyOIhydUU42tT7JoUh8x8N4ftzd2NVIp/uIk+vxOYag7w0NC0dRX9evsiaF5Gnt8UHIwUuPilcwG5lZIqSqn2zmENrMpCRr4vh4bhroPkMiznKg3Kr6wA3mnIgjnmc/dCHo3eGuX8tyZZXVRrtjjeATNlAhQociUjhlc48LQFhqGNHv73th7IKKkcXDZMk+OSr2jtNfSy5q/meBMYD4OnTIZVGt0TYnKZVL4chaXoEjYqVU/SzHIGx+JJkkN/IW7Z7AeivIMv7JNiPeseWch4//+G0VXVoEabfHeU7qhWIDEkFB9/6p1j5y4mvxhWIkx3YgCbguJFWSDvDKsmxJB root@Base01
      
    2. 为什么将主机A的公钥拷贝到主机B和主机C上 就可以实现免密登录了呢?
      通过密码登录

      通过密钥验证登录

  • 相关阅读:
    蓝盾杯writeup
    记一次被吊打的排位赛(writeup)
    记一次简单的PHP代码审计(SSRF案例)
    记一次简单的GetShell案例
    斯坦福cs231n计算机视觉经典课程笔记(更新中)
    centos8 下配置 uwsgi + Django
    C++坑点随笔
    matlab调教日记 ---- 语法问题汇总
    matlab调教日记 --- debug篇
    MySQL解决中文编码问题
  • 原文地址:https://www.cnblogs.com/atwo/p/14133026.html
Copyright © 2011-2022 走看看