ssh的秘钥认证
ssh秘钥认证简述
通常我们会使用x-shell、putty、MobaXterm等支持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的秘钥认证的更多相关文章
- ssh分发秘钥时出现错误“Permission denied (publickey,gssapi-keyex,gssapi-with-mic)”
因为公司的服务器连接是通过xshell公钥和密码连接的,今天在ssh分发秘钥的时候出现了,下面的错误: [root@iZ2ze97cumk8opqm28h8Z .ssh]# ssh-copy-id - ...
- 克隆虚拟机+Linux互相登录+秘钥认证(四)
1.虚拟机右键管理_克隆 修改虚拟机名称后完成! 2.开机启动虚拟机 随时保存快照 3.开启两台虚拟机,进行互相登录切换!(W命令查看系统负载) 补充: IP登录: ssh IP: 例如:ssh 19 ...
- Linux SSH 免秘钥登录
SSH 免秘钥登录 ssh:是一种安全加密协议 ssh username@hostname ssh gongziyuan.com:以当前用户登录该机器(如果不是当前用户,需要这么干:ssh ...
- ansible-playbook 打通ssh无秘钥
建议参考: http://www.cnblogs.com/jackchen001/p/6514018.html 这个代码清晰,效果佳! 参考链接: http://www.cnblogs.com/cao ...
- linux下ssh免秘钥登录
1.检查防火墙是否关闭 (1)切换到root用户 (2)查看防火墙状态 service iptables status 这是没有关闭 (3)设置关闭 service iptables stop 2.检 ...
- ssh 多秘钥管理和坑
概述 很久之前就想研究一下 ssh 的多秘钥管理,今天正好有时间就研究了一下,挺简单的,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: Git - 生成 SSH公钥 , Linux 下多 ...
- SSH设置秘钥登录
设置 SSH 通过密钥登录 我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默 ...
- keychain实现ssh对秘钥免登陆免输入密码
Linux同一网段实现密码认证,管理. 项目:https://github.com/funtoo/keychain 01.生成秘钥 ssh-keygen -t rsa # -t rsa | ds ...
- 配置SSH无秘钥登录
[hadoop@hadoop01 ~]$ cd .ssh [hadoop@hadoop01 .ssh]$ ls authorized_keys id_rsa id_rsa.pub known_host ...
随机推荐
- 6、高级的数组的复制(test4.java)
这里指的高级,并不是过么高大上,而是说我们可以调用系统函数,直接对数组进行复制,并且这个函数的强大并不止局限于,对数组的复制,而且可以对数组进行截取,在指定位置插入或删除某个元素. 本篇只介绍数组的复 ...
- Netty学习(六)-LengthFieldBasedFrameDecoder解码器
在TCP协议中我们知道当我们在接收消息时候,我们如何判断我们一次读取到的包就是整包消息呢,特别是对于使用了长连接和使用了非阻塞I/O的程序.上节我们也说了上层应用协议为了对消息进行区分一般采用4种方式 ...
- alluxio源码解析-层次化存储(4)
层次化存储-特性介绍: https://www.alluxio.org/docs/1.6/cn/Tiered-Storage-on-Alluxio.html 引入分层存储后,Alluxio管理的数据块 ...
- 深度学习模型训练技巧 Tips for Deep Learning
一.深度学习建模与调试流程 先看训练集上的结果怎么样(有些机器学习模型没必要这么做,比如决策树.KNN.Adaboost 啥的,理论上在训练集上一定能做到完全正确,没啥好检查的) Deep Learn ...
- 分享一个非常好用又好看的终端工具--Hyper (支持windows、MacOS、Linux)
分享一个非常好用又好看的终端工具--Hyper 官网地址: https://hyper.is/ 打开官网,选择对应版本安装即可:(可能网络原因,无法下载, 可以从我分享的链接下载 链接: https: ...
- 大陆争霸[SDOI2010]带限制最短路
只要你有无限个自爆机器人,你就能为所欲为 斯普林·布拉泽 [题目描述] 略 一句话题意: 杰森国有 \(N\) 个城市,由 \(M\) 条单向道 路连接.杰森国的首都是城市 \(N\).你只需摧毁杰森 ...
- 洛谷 P1960 列队
题意简述 有一个n × m 的矩阵,第i行第j列元素编号为(i - 1)× m +j 每次将一个数取出,其他元素依次向左,向上填补空缺,最后将取出的数放入矩阵最后一格 求每次取出数的编号 题解思路 由 ...
- Hive安装与部署
进去root权限(su) 1.从https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.ta ...
- AutoCAD .NET: 遍历模型空间
原文:http://spiderinnet1.typepad.com/blog/2012/06/autocad-net-iterate-through-model-space.html https:/ ...
- Jenkins使用aqua-microscanner-plugin进行容器漏洞扫描
官方地址:https://github.com/jenkinsci/aqua-microscanner-plugin Step1 在jenkins安装"Aqua MicroScanner&q ...