美文网首页Java高级架构玩转大数据大数据
[土木匠] linux服务器ssh免密钥通信

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

作者: 后端老鸟 | 来源:发表于2018-01-30 16:11 被阅读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
  • 将自己的公钥追加到其他机器的authorized_keys文件中
    我是先将test2和test3的公钥依次添加到test1,然后再从test1分发到test2和test3,这样几台机器都持有另外两台机器的公钥,可以互相免密钥登录。
    先添加test2的公钥到test1,登录到test2,执行
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

相关文章

网友评论

    本文标题:[土木匠] linux服务器ssh免密钥通信

    本文链接:https://www.haomeiwen.com/subject/jwqczxtx.html