SSH实现双向认证
SSH实现双向认证
由于经常需要使用scp在两台机器间拷贝文件,每次都输入密码太麻烦,于是按下面的步骤配置了一下,再使用ssh或scp登录远程机器时就不需输入密码了:
A主机:192.168.100.82
B主机:192.168.100.83
Linux/Unix双机建立信任
1.在A机生成证书
在A机root用户或其他用户下执行ssh-keygen命令,在需要输入的地方,直接回车,生成建立安全信任关系的证书。
[root@localhost ~]#ssh-keygen -t rsa
注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。
上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中.
2.查看~/.ssh生成密钥的文件
[root@localhost ~]# ll /root/.ssh/
total 8
-rw------- 1 root root 1675 Apr 27 15:55 id_rsa
-rw-r--r-- 1 root root 400 Apr 27 15:55 id_rsa.pub
3.A对B建立信任关系
将A主机的公钥证书id_rsa.pub复制到机器B主机的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys,此时需要输入B主机的root用户密码(还未建立信任关系)。建立了客户端到服务器端的信任关系后,客户端就可以不用再输入密码,就可以从服务器端拷贝数据了。
scp -r -P 22 /root/.ssh/id_rsa.pub root@192.168.100.83:/root/.ssh/authorized_keys
如果做单向认证,这里已经可以实现A到B的免秘钥上传下载了.
4.B对A建立信任关系
在B机上执行同样的操作,建立B对A的信任关系。
[root@localhost ~]#ssh-keygen -t rsa
root@localhost ~]# ll /root/.ssh/
total 8
-rw-r--r-- 1 root root 1678 Apr 27 15:59 authorized_keys
-rw------- 1 root root 1675 Apr 27 15:55 id_rsa
-rw-r--r-- 1 root root 400 Apr 27 15:55 id_rsa.pub
将B主机的公钥证书id_rsa.pub复制到机器A主机的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys
scp -r -P 22 /root/.ssh/id_rsa.pub root@192.168.100.82:/root/.ssh/authorized_keys
这样A和B主机就可以互相传文件而不需要密码了.
如果连接反应慢,请修改以下两参数
/etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no
重启sshd
service sshd restart
################################################################################
二.使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录
由于上面这样复制文件很麻烦,以下给出更为方便的方法,在做单向ssh认证时都在本端计算机进行, 即使用ssh-copy-id进行操作,它可以直接在对端生成authorized_keys文件.
[user1@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Created directory '/home/user1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
da:e3:f0:2b:93:47:15:4d:a1:dc:68:00:07:ec:41:87 user1@localhost
The key's randomart image is:
+--[ RSA 2048]----+
| o+++ oo. |
| Eo o.+. |
| . . =.. |
| . .. |
| S. |
| o. |
| ooo |
| ++.. |
| ++. |
+-----------------+ [user1@localhost ~]$ ssh-copy-id -i .ssh/id_rsa.pub "-p 6168 user1@192.168.3.192"
The authenticity of host '[192.168.3.192]:6168 ([192.168.3.192]:6168)' can't be established.
RSA key fingerprint is 8d:8c:22:67:68:f7:ad:1e:83:f3:4c:d4:32:d8:53:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.3.192]:6168' (RSA) to the list of known hosts.
user1@192.168.3.192's password:
Now try logging into the machine, with "ssh '-p 6168 user1@192.168.3.192'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [user1@localhost ~]$
#这样就会自动在192.168.3.192远端机器的.ssh目录下创建authorized_keys文件.
#!/bin/bash
if [ ! -f ~/.ssh/id_rsa ];then
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
else
echo "id_rsa has created ..."
fi
其中:
SSH实现双向认证的更多相关文章
- 18.ssh远程双向无密码登陆
		#ssh远程双向无密码登陆 需求:在192.168.10.100执行ssh 192.168.20.205不需要输入密码直接跳转到205机器 #在192.168.10.100执行命令,我这里使用root ... 
- linux运维、架构之路-Kubernetes集群部署TLS双向认证
		一.kubernetes的认证授权 Kubernetes集群的所有操作基本上都是通过kube-apiserver这个组件进行的,它提供HTTP RESTful形式的API供集群内外客户端调 ... 
- HTTPS 双向认证构建移动设备安全体系
		HTTPS 双向认证构建移动设备安全体系 对于一些高安全性要求的企业内项目,我们有时希望能够对客户端进行验证.这个时候我们可以使用Https的双向认证机制来实现这个功能. 单向认证:保证server是 ... 
- https单向认证和双向认证
		单向认证: .clinet<--server .clinet-->server .client从server处拿到server的证书,通过公司的CA去验证该证书,以确认server是真实的 ... 
- phantomjs 双向认证,访问nginx,https
		应用背景: phantomjs的一个爬虫,访问https站点,单向认证(只认证服务器身份)的都可以,双向认证(服务器和客户端都需要认证)必须上传本地证书: 开始用一个包含公钥私钥的PEM证书访问,怎么 ... 
- tomcat配置SSL双向认证
		一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全? ... 
- NGINX 配置 SSL 双向认证
		对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可 ... 
- ssl双向认证和单向认证原理
		有朋友在搞一个项目,周末有聊到一些安全性的东西,很自然会想起https,但https究竟如何实施,其原理又是什么? 基于ssl,一般的应用都是单向认证,如果应用场景要求对客户来源做验证也可以实现成双向 ... 
- https 单向认证和双向认证配置
		HTTPS 是我们开发中经常用到的通信加密技术,能有效保护我们网络访问中的安全,本文主要讲解单向 和 双向 https 的配置.关于https 的实现原理在这里我就不赘述了,附上阮一峰老师的关于htt ... 
随机推荐
- Lua string.gsub (s, pattern, repl [, n])
			lua的string函数导出在string module中.在lua5.1,同时也作为string类型的成员方法,因此,我们既可以写成string.gsub (s,……), 也可以s:gsub(). ... 
- Docker考前突击
			dockerfile 介绍 镜像(Image) 容器(Container) 仓库(Repository) 
- Node.js学习笔记(1)--一个最简单的服务器请求
			说明(2017-5-2 10:27:03): 1. 需要安装node,http://nodejs.cn/download/ 2. 安装完后,在cmd里输入node -v可以查看版本. 3. 代码foo ... 
- ARKit从入门到精通(4)-ARKit全框架API大全
			转载:http://blog.csdn.net/u013263917/article/details/73156679 1.1-ARKit框架简介 1.2-ARAnchor 1.3-ARCamera ... 
- NLP实现文本分词+在线词云实现工具
			实现文本分词+在线词云实现工具 词云是NLP中比较简单而且效果较好的一种表达方式,说到可视化,R语言当仍不让,可见R语言︱文本挖掘——词云wordcloud2包 当然用代码写词云还是比较费劲的,网上也 ... 
- Android VLC播放器二次开发2——CPU类型检查+界面初始化
			上一篇讲了VLC整个程序的模块划分和界面主要使用的技术,今天分析一下VLC程序初始化过程,主要是初始化界面.加载解码库的操作.今天主要分析一下org.videolan.vlc.gui.MainActi ... 
- AT24Cxx(EEPROM)子系统
			1.配置内核 打开I2C功能: 打开杂项设备,该选项打开后,EEPROM也就打开了. 2. 修改代码 修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c ... 
- Go Revel - Validation(验证)
			Revel提供了内建函数用于验证参数.它提供了: 一个`Validation`上下文集合来管理验证错误信息(键与消息内容) 辅助函数用于检查数据并将错误信息放入上下文 一个模板函数用于从`Valida ... 
- Android——线程通讯类Handler(转)
			原文地址:http://uule.iteye.com/blog/1705951 handler是线程通讯工具类.用于传递消息.它有两个队列:1.消息队列2.线程队列 消息队列使用sendMessage ... 
- gulp实例
			前端生产环境的简单部署http://ionichina.com/topic/558a1c1346cb5ff7268cee9d var gulp = require('gulp'); // 引入gulp ... 
