ssh秘钥认证简述

通常我们会使用x-shellputtyMobaXterm等支持ssh连接的工具去登录服务器进行管理,而执行ssh命令、scp命令等从一台服务器登录另外一台服务器的时候,通常需要我们输入对应用户的密码,除了用户名/密码模式外,实际上还支持ssh秘钥登录,熟悉git工具的同学对此一定不会陌生,gitlab、github等都会支持http连接和ssh连接两种模式,而ssh模式会在我们本机中生成私钥文件(id_rsa)、公钥文件(id_rsa.pub)、认证信息文件(known_hosts)等,如图:

生成公钥和私钥

利用公钥、私钥对进行身份认证或者信息加密不是本文的重点,感兴趣的同学可以自行搜索资料了解对应的原理,下面开始介绍ssh的相关命令

默认情况下的Linux主机或者windows主机没有前面提到的公钥、私钥、认证信息等文件,我们通过ssh-keygen命令来生成(ssh key generate的缩写):

上图中的交互式过程很好理解,默认把私钥生成到/root/.ssh/id_rsa中(本例用的root用户登录,其它用户默认会在自己的home目录的/.ssh/下生成),然后是否给私钥再加入密码(给私钥加密码则每次用私钥认证还需要再输入密码,不是我们想要的效果了),我们直接回车跳过,这样我们就得到了自己的公钥和私钥对了。当然,这里采用的加密算法默认是rsa,我们也可以选择其他的加密算法,例如:dsa、ecdsa、ed25519,得到的文件也会不同,这里我们只采用默认的。

免秘钥登录

想要免秘钥登录别的机器,那么需要把自己的公钥给别的机器做认证,别人才会允许你登录,命令就是:ssh-copy-id

例如:我们要从172.16.101.4这台机器ssh登录172.16.101.34,输入命令:

 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.101.34

其中-i参数表示指定本机的公钥文件

根据提示输入了172.16.101.34的登录密码后,就会在172.16.101.34机器上生成认证文件/root/.ssh/authorized_keys:

仔细对比就会发现,这里生成的认证信息,就是172.16.101.4的公钥文件的内容,这条命令实际上就是拷贝公钥到172.16.101.34,为什么我们不直接拷贝呢?因为直接拷贝需要建立文件夹、建立文件、赋予正确的权限、拷贝内容编码、拷贝是否完整等一系列问题,容易造成错误,不如直接执行命令来的方便~当然,我们也给出拷贝命令:

cat ~/.ssh/id_rsa.pub | ssh -p 22 root@172.16.101.34 "umask 077;mkdir -p ~/.ssh;cat - >> ~/.ssh/authorized_keys"

如果要连接的服务器不是采用的默认22端口,那么我们需要在命令中指定具体端口

当前服务器为centos6:

ssh-copy-id -i ~/.ssh/id_rsa.pub "root@172.16.101.34 -p 端口号"

当前服务器为centos7:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.101.34 -p 端口号

至此,我们就能通过ssh命令免密码登录到其他机器了。至于这个有什么用,在ansible的主机管理与通讯部分会用到~

ssh的秘钥认证的更多相关文章

  1. ssh分发秘钥时出现错误“Permission denied (publickey,gssapi-keyex,gssapi-with-mic)”

    因为公司的服务器连接是通过xshell公钥和密码连接的,今天在ssh分发秘钥的时候出现了,下面的错误: [root@iZ2ze97cumk8opqm28h8Z .ssh]# ssh-copy-id - ...

  2. 克隆虚拟机+Linux互相登录+秘钥认证(四)

    1.虚拟机右键管理_克隆 修改虚拟机名称后完成! 2.开机启动虚拟机 随时保存快照 3.开启两台虚拟机,进行互相登录切换!(W命令查看系统负载) 补充: IP登录: ssh IP: 例如:ssh 19 ...

  3. Linux SSH 免秘钥登录

    SSH 免秘钥登录 ssh:是一种安全加密协议 ssh  username@hostname     ssh gongziyuan.com:以当前用户登录该机器(如果不是当前用户,需要这么干:ssh ...

  4. ansible-playbook 打通ssh无秘钥

    建议参考: http://www.cnblogs.com/jackchen001/p/6514018.html 这个代码清晰,效果佳! 参考链接: http://www.cnblogs.com/cao ...

  5. linux下ssh免秘钥登录

    1.检查防火墙是否关闭 (1)切换到root用户 (2)查看防火墙状态 service iptables status 这是没有关闭 (3)设置关闭 service iptables stop 2.检 ...

  6. ssh 多秘钥管理和坑

    概述 很久之前就想研究一下 ssh 的多秘钥管理,今天正好有时间就研究了一下,挺简单的,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: Git - 生成 SSH公钥 , Linux 下多 ...

  7. SSH设置秘钥登录

    设置 SSH 通过密钥登录 我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默 ...

  8. keychain实现ssh对秘钥免登陆免输入密码

    Linux同一网段实现密码认证,管理. 项目:https://github.com/funtoo/keychain 01.生成秘钥 ssh-keygen -t rsa   #  -t rsa | ds ...

  9. 配置SSH无秘钥登录

    [hadoop@hadoop01 ~]$ cd .ssh [hadoop@hadoop01 .ssh]$ ls authorized_keys id_rsa id_rsa.pub known_host ...

随机推荐

  1. commons-logging + log4j源码分析

    分析之前先理清楚几个概念 Log4J = Log For Java SLF4J = Simple Logging Facade for Java 看到Facade首先想到的就是设计模式中的门面(Fac ...

  2. 利用tensorboard可视化checkpoint模型文件参数分布

    写在前面: 上周微调一个文本检测模型seglink,将特征提取层进行冻结,只训练分类回归层,然而查看tensorboard发现里面有histogram显示模型各个参数分布,看了目前这个训练模型参数分布 ...

  3. vue组件传值之$attrs、$listeners

    当有父组件A,子组件B,孙子组件C的时候 A-B B-C 的传值想必大家应该都非常熟悉了,通过props和$emit和$on来进行传值 那么A-C之间的传值要怎么做呢? 1.event.bus总线传值 ...

  4. Oracle 12cR1 RAC集群安装(一)--环境准备

    基本环境 操作系统版本 RedHat6.7 数据库版本 12.1.0.2 数据库名称 testdb 数据库实例 testdb1.testdb2 (一)安装服务器硬件要求 配置项目 参数要求 网卡 每台 ...

  5. Spark 系列(十五)—— Spark Streaming 整合 Flume

    一.简介 Apache Flume 是一个分布式,高可用的数据收集系统,可以从不同的数据源收集数据,经过聚合后发送到分布式计算框架或者存储系统中.Spark Straming 提供了以下两种方式用于 ...

  6. 不得不会的10点Java基础知识

    1.实例变量和类变量 实例变量:指每个对象独立的,修改其中一个对象的实例变量,不会影响其他实例变量的值,变量值无 static 关键字修饰: 类变量:是指所有对象共享的,其中一个对象把该变量的值修改了 ...

  7. 学习Vuex 个人的一些拙见。

    首先说下什么是vuex?这个是对vue的状态的管理,这样说可能有点大,其实就是vue 里面 data  的管理,或者说是多个vue 组件共有的data 的一种管理, 在任何一个组件里面,都可以修改,访 ...

  8. Scrapy框架解读

    1. Scrapy组件a. 主体部分i. 引擎(Scrapy):处理整个系统的数据流处理,触发事务(框架核心)ii. 调度器(Scheduler):1) 用来接受引擎发过来的请求, 压入队列中, 并在 ...

  9. 字符串匹配算法之————KMP算法

    上一篇中讲到暴力法字符串匹配算法,但是暴力法明显存在这样一个问题:一次只移动一个字符.但实际上,针对不同的匹配情况,每次移动的间隔可以更大,没有必要每次只是移动一位: 关于KMP算法的描述,推荐一篇博 ...

  10. 01 - zabbix | LLD自动发现

    01 - zabbix | LLD自动发现 1. 原理 zabbix支持设置变量,用{#VAR_NAME}来表示.然后有一些系统保留的变量 2. 设置 2.1 交换机电源自动发现   名字写好后进进入 ...