Java高级架构玩转大数据大数据

[土木匠] linux服务器ssh免密钥通信

2018-01-30  本文已影响13人  后端老鸟

【转载请注明出处】:土木匠   https://www.jianshu.com/p/5fc0dc44df7f

1、ssh免密钥通信原理

SSH是一种网络协议,用于计算机之间的加密登录。通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。
但是密码认证有以下的缺点:

需要注意的是SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
SSH之所以能够保证安全,原因在于它采用了公钥认证。所谓的公钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),任何人都可以看到其内容;另一个称为密钥(private key),只有拥有者才能看到。
公钥登录流程:

引用自https://www.jianshu.com/p/33461b619d53
关于ssh的基础知识可以参考https://www.jianshu.com/p/33461b619d53http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
这两篇文章介绍的非常清楚。

2、ssh实践

我这里有三台机器:
test1、test2和test3,它们同属一个局域网,彼此之间是可以ping通的。

 ssh-keygen -t rsa (执行之后一直回车)
image.png

会在$HOME/.ssh/目录下生成以下文件:


image.png

其中,id_rsa.pub是公钥,id_rsa是私钥。然后将公钥拷贝到authorized_keys中

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys  root@test1/root/

然后输入test1密码传输文件,完成之后登录到test1,执行

 cat /root/authorized_keys >> /root/.ssh/authorized_keys

这样就将test2的公钥添加到了test1,然后登录到test2验证

ssh test1 

输入yes确认连接之后不用再输入密码,登录test3进行同样的操作,将test3的公钥也添加到test1中。之后,test1中已经有了这三台的公钥,然后将test1的authorized_keys分发到test2和test3,这样每台机器都有这三台机器的全部公钥。

scp /root/.ssh/authorized_keys  root@test2/root/.ssh/   (输入密码继续)
scp /root/.ssh/authorized_keys  root@test3/root/.ssh/   (输入密码继续)

至此,这三台机器已经可以免密钥登录了。

【转载请注明出处】:土木匠   https://www.jianshu.com/p/5fc0dc44df7f

上一篇下一篇

猜你喜欢

热点阅读