环境:CentOS 7

一、创建密钥

  1. 登录Linux进入/root/.ssh/目录下
  2. 没有生成密钥的目录如下
  3. 执行ssh-keygen -t rsa 创建密钥,一直回车即可,红框是输入密码,因为是免密所以直接回车略过;执行完之后会在/root/.ssh/下生成两个文件id_rsa、id_rsa.pub分别为私钥和公钥,id_rsa保存好不要丢失!id_rsa保存好不要丢失!id_rsa保存好不要丢失!重要的事说三遍。如果对密钥长度有限制的话可以执行ssh-keygen -t rsa -b 4096

二、创建信任

  1. 把生成的公钥文件id_rsa.pub下载、上传到目标服务器上,也可以直接通过命令ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.1传过去,不过命令默认端口是22
  2. 登录目标服务器,相同的目录/root/.ssh/下查看有没有authorized_keys文件,没有的话需要创建一个,命令是               touch authorized_keys ,创建后授权600 ,把公钥文件id_rsa.pub追加到authorized_keys文件中,命令是                        cat 192.168.1.1.pub >> authorized_keys,注意是双箭头>>单箭头会覆盖文件中的内容。

三、免密登录

  1. ssh root@192.168.1.55  //这种是使用自己的公钥登录目标服务器
  2. 使用公钥登录,需要把本地生成的公钥添加到目标服务器的 authorized_keys 文件中

  3. 使用目标服务器的私钥登录,需要两步

    第一步:在目标服务器上生成密钥对,把目标服务器自己的公钥添加到目标服务器自己的 authorized_keys 信任文件中

    第二步:把目标服务器的私钥拷贝到你本地的服务器

    # 这里的 id_rsa 私钥文件是目标服务器的私钥文件
    ssh -i id_rsa root@192.168.1.55

四、免密登录普通用户

  1. 流程大致一样,root用户是在/root/.ssh/目录下;普通用户是在/home/用户/.ssh/目录下,没有的话需要手动创建
  2. mkdir /home/demo/.ssh  //创建文件夹,授权700
    touch /home/demo/.ssh/authorized_keys   //创建文件,授权600
    cat /home/demo/.ssh/id_rsa.pub >> /home/demo/.ssh/authorized_keys   //追加公钥
  3. 基于密钥认证的配置
vi /etc/ssh/sshd_config  PasswordAuthentication no //禁止使用基于口令认证的方式登陆PubkeyAuthentication yes //允许使用基于密钥认证的方式登陆/etc/init.d/sshd reload

五、网上找到的一些资料

1、普通用户切换到root权限且无需输入密码,在root模式下进行以下操作

visudo  //最后一行加入
Cmnd_Alias SU = /bin/su
oper ALL = (root)  NOPASSWD: SU

2、./ssh目录下的一些文件说明

~/.ssh/identity该用户默认的 RSA1 身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。生成密钥的时候可以指定采用密语来加密该私钥(3DES)。ssh(1) 将在登录的时候读取这个文件。~/.ssh/identity.pub该用户默认的 RSA1 身份认证公钥(SSH-1)。此文件无需保密。此文件的内容应该添加到所有 RSA1 目标主机的 ~/.ssh/authorized_keys 文件中。~/.ssh/id_dsa该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。生成密钥的时候可以指定采用密语来加密该私钥(3DES)。ssh(1) 将在登录的时候读取这个文件。~/.ssh/id_dsa.pub该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。此文件的内容应该添加到所有 DSA 目标主机的 ~/.ssh/authorized_keys 文件中。~/.ssh/id_rsa该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。生成密钥的时候可以指定采用密语来加密该私钥(3DES)。ssh(1) 将在登录的时候读取这个文件。~/.ssh/id_rsa.pub该用户默认的 RSA 身份认证公钥(SSH-2)。此文件无需保密。此文件的内容应该添加到所有 RSA 目标主机的 ~/.ssh/authorized_keys 文件中。/etc/ssh/moduli包含用于 DH-GEX 的 Diffie-Hellman groups 。文件的格式在 moduli(5) 手册页中描述。

3、ssh-keygen可用的参数选项:

     -a trials在使用 -T 对 DH-GEX 候选素数进行安全筛选时需要执行的基本测试数量。-B      显示指定的公钥/私钥文件的 bubblebabble 摘要。-b bits指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。-C comment提供一个新注释-c      要求修改私钥和公钥文件中的注释。本选项只支持 RSA1 密钥。程序将提示输入私钥文件名、密语(如果存在)、新注释。-D reader下载存储在智能卡 reader 里的 RSA 公钥。-e      读取OpenSSH的私钥或公钥文件,并以 RFC 4716 SSH 公钥文件格式在 stdout 上显示出来。该选项能够为多种商业版本的 SSH 输出密钥。-F hostname在 known_hosts 文件中搜索指定的 hostname ,并列出所有的匹配项。这个选项主要用于查找散列过的主机名/ip地址,还可以和 -H 选项联用打印找到的公钥的散列值。-f filename指定密钥文件名。-G output_file为 DH-GEX 产生候选素数。这些素数必须在使用之前使用 -T 选项进行安全筛选。-g      在使用 -r 打印指纹资源记录的时候使用通用的 DNS 格式。-H      对 known_hosts 文件进行散列计算。这将把文件中的所有主机名/ip地址替换为相应的散列值。原来文件的内容将会添加一个".old"后缀后保存。这些散列值只能被 ssh 和 sshd 使用。这个选项不会修改已经经过散列的主机名/ip地址,因此可以在部分公钥已经散列过的文件上安全使用。-i      读取未加密的SSH-2兼容的私钥/公钥文件,然后在 stdout 显示OpenSSH兼容的私钥/公钥。该选项主要用于从多种商业版本的SSH中导入密钥。-l      显示公钥文件的指纹数据。它也支持 RSA1 的私钥。对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据。-M memory指定在生成 DH-GEXS 候选素数的时候最大内存用量(MB)。-N new_passphrase提供一个新的密语。-P passphrase提供(旧)密语。-p      要求改变某私钥文件的密语而不重建私钥。程序将提示输入私钥文件名、原来的密语、以及两次输入新密语。-q      安静模式。用于在 /etc/rc 中创建新密钥的时候。-R hostname从 known_hosts 文件中删除所有属于 hostname 的密钥。这个选项主要用于删除经过散列的主机(参见 -H 选项)的密钥。-r hostname打印名为 hostname 的公钥文件的 SSHFP 指纹资源记录。-S start指定在生成 DH-GEX 候选模数时的起始点(16进制)。-T output_file测试 Diffie-Hellman group exchange 候选素数(由 -G 选项生成)的安全性。-t type指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)-U reader把现存的RSA私钥上传到智能卡 reader-v      详细模式。ssh-keygen 将会输出处理过程的详细调试信息。常用于调试模数的产生过程。重复使用多个 -v 选项将会增加信息的详细程度(最大3次)。-W generator指定在为 DH-GEX 测试候选模数时想要使用的 generator-y      读取OpenSSH专有格式的公钥文件,并将OpenSSH公钥显示在 stdout 上。

Linux 实现密钥免密登录相关推荐

  1. linux xshell用户免密登录设置

    最重要准备工作 ​编辑linux xshell用户免密登录设置步骤 1.在xshel进行密钥获取操作 2.创建mkdir ~/.ssh目录(检查有没有这个目录,没有自己添加) 3.在该目录创建auth ...

  2. linux中ssh免密登录,Linux之SSH免密登录

    Linux 双向 SSH 免密登录 原理 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要 ...

  3. linux上ssh免密登录原理及实现

    因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp( ...

  4. 花式玩转Linux集群免密登录

    文章目录 1.前言 2.基础(两种方法前都要先ready) 3.方法一(常用) 4.方法二(简单) 5. `.ssh`文件下的`known_hosts`文件 1.前言   大数据集群往往需要多台机器构 ...

  5. Linux服务器SSH免密登录

    在登录机器执行 #产生秘钥,一路回车 ssh-keygen -t rsa #将秘钥复制到需要免密登录到的服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.16 ...

  6. 20210829-基于CentOS7/Linux配置ssh免密登录

    #关键字:Linux,CentOS7,ssh 登录,免密登录 目录 一.目标: 二.环境说明: 三.配置步骤: 一.目标: 1. 从一台机器使用 'shh 主机名'命令登录另一台机器时不用输入密码. ...

  7. linux节点间免密登录

    一.如何实现免密登录 ssh 支持基于 RSA 的认证. 这种方案依托于公开密钥算法: 密码系统的加密和解密通过不同的密钥完成, 无法通过加密密钥推导出解密密钥. RSA 就是这种密码系统. 每个用户 ...

  8. linux 配置免密码登录,Linux - 配置SSH免密登录 - “ssh-keygen”的基本用法

    1 什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定:它是建立在应用层基础上的安全协议. S ...

  9. Linux之RHCE免密登录及HTTP详解

    目录 1.实现免密登录 1.进入目录 2.产生公钥私钥 3. 创建信任 4.免密登录 ​2.设置只允许student1, student2用户登录 1.创建student1和student2并设置密码 ...

最新文章

  1. python嵩天课后思考题_Python语言程序设计基础(第二版)嵩天等课后习题答案
  2. sparksql(3)——dataframe导入json-spark.read.json()
  3. 改进粒子群优化算法(PURPSO)的MATLAB源程序
  4. 医疗人工智能市场有多大?
  5. SAP License:SAP FI/CO—Questions and Answers
  6. 来自Comsenz产品团队的声音
  7. 计算机考研专业课卷子,考研统考专业课有哪些?题型都有什么?你了解吗
  8. html异步 post,Jquery中Ajax/Post同步和异步请求
  9. excel的表格数据转为数据库的dbf文件
  10. access2016与mysql_Access 2016数据库应用与开发
  11. 搭建无iDP证书的Xcode环境
  12. spring使用之旅 ---- bean的装配
  13. 分布式环境下限流方案的实现
  14. 一文读懂自学机器学习的误区和陷阱(附学习资料)
  15. web安全攻防渗透+赵雨佳43
  16. 大厂程序员完美的一天
  17. 漫画:什么是大数据?
  18. 安装Mosquitto学习MOTT协议
  19. 如何使用openCV和立创eda绘制一个有形状带图案的专属pcb
  20. python socket编程 实现简单p2p聊天程序

热门文章

  1. mysql中condition的用法,mybatis的condition使用
  2. iOS keychain(钥匙串)的使用记录
  3. UVa 10596 - Morning Walk, 赤裸裸的欧拉回路
  4. LabVIEW编程LabVIEW开发NI 4351例程与相关资料
  5. 3D园区数据可视化建筑三维模型大屏展示
  6. [Spring]如何使用bcrypt
  7. CDN含义与DNS的联系
  8. Windows server 2019安装net framework 2.0 3.5
  9. 字符数组没赋值时显示屯屯屯屯屯屯屯屯屯的原因
  10. 哈佛结构与普林斯顿结构的区别通俗易懂