博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux ssh无密码互信配置
阅读量:6278 次
发布时间:2019-06-22

本文共 2730 字,大约阅读时间需要 9 分钟。

hot3.png

一、以root用户登录,更改SSH的配置文件 /etc/ssh/sshd_config 

 RSAAuthentication yes # 启用 RSA 认证

 PubkeyAuthentication yes # 启用公钥私钥配对认证方式

 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

重启SSH服务: service sshd restart 

 

二、以无密码访问的用户执行如下命令建立公钥和私钥,提示输入时直接回车。

[root@localhost asg]# ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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.
The key fingerprint is:
72:bb:4f:1d:ef:57:d0:7f:5a:40:f2:63:cc:77:6c:86 root@localhost.localdomain

默认公钥文件/root/.ssh/id_rsa.pub

默认私钥文件/root/.ssh/id_rsa
.ssh文件夹如果不存在,需要手动创建,并将权限改为700

 

三、如果要和其他机器建立互信、让其他机器无密码访问本机,需要将其他机器的公钥拷贝到本机,并追加到文件/root/.ssh/authorized_keys,然后修改该文件权限为600.

scp  192.168.50.147:/root/.ssh/id_rsa.pub  /root/.ssh/147.pub

cat  /root/.ssh/147.pub >>/root/.ssh/authorized_keys
(147以root用户建立的公钥和私钥,本机就可以以root用户无密码ssh访问147)

 

四、SSH无密码验证的原理:

Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。

 

 

 

 

 

 

 

 

转另外一篇博客:

 

今天同事让我写个脚本在一台机器上能起另外机器上的服务,首先我想到了SSH互信,下面让我们配置一下SSH互信。

我们准备在 web-1和web-2这两台机器上进行ssh互信配置:

 

首先,我们先了解一下ssh互信的原理,说白了,就是两台机器(web-1和web-2)经过预先设置好经过认证的key文件,双方互相访问时,进行自动认证,从而实现互信。

 

互信的原理了解了,我们可以把配置ssh互信的步骤进行有效的分割。

1.在要配置互信的机器(web-1和web-2)上生成各自经过认证的key文件。

2.将所有的key文件汇总到一个总的认证文件夹中。

3.将打包的key发给想要进行互信的机器(web-1,web-2)

4.互信的验证

 

经过分析,思路变的清晰了,下面我们动手来实际操作:

1.在两台机器上生成认证文件,就是ssh互信的认证文件,需要放在用户的home目录中,所以我们需要先创建这个目录,且保证这个目录的全县时755

[root@web-1 ~]# mkdir ~/.ssh

[root@web-1 ~]# chmod 755 ~/.ssh

[root@web-1 ~]# /usr/bin/ssh-keygen -t rsa #下面默认回车就行

[root@web-1 ~]# /usr/bin/ssh-keygen -t dsa

 

[root@web-2 ~]# mkdir ~/.ssh

[root@web-2 ~]# chmod 755 ~/.ssh

[root@web-2 ~]# /usr/bin/ssh-keygen -t rsa

[root@web-2 ~]# /usr/bin/ssh-keygen -t dsa

 

2.必须将每个主机上的公共密钥文件id_rsa.pub和id_dsa.pub的内容复制到其他每一个主机的~/.ssh/authorized_keys文件中。注意,当您第一次使用ssh访问远程主机时,其RSA密钥是未知的,所以提示确认一下,确认完毕后SSH将纪录远程主机的RSA密钥,以后连接该主机将不再做出相应的提示。

[root@web-1 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[root@web-1 ~]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

[root@web-1 ~]# ssh root@web-2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[root@web-1 ~]# ssh root@web-2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 

3.经过上述两步,在web-1上存了一份完整的key认证文件,我们只需要把这个目录拷贝到web-2这台机器的对应目录里去就可以了,别忘了把authorized_keys 的权限设置成600

[root@web-1 ~]# scp ~/.ssh/authorized_keys web-2:~/.ssh/authorized_keys

[root@web-1 ~]# chmod 600 ~/.ssh/authorized_keys

 

4.到此为止,互信配置完毕,检测一下是否成功。

 

转载于:https://my.oschina.net/goopand/blog/486148

你可能感兴趣的文章
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>