关于ssh的基本知识

SSH(安全外壳协议)

SSH为Secure Shell的缩写,是一种网络安全协议,专为远程登录会话和其他网络服务提供安全性的协议。生产中,我们经常使用ssh来登录、免密码登录远程linux机器。

SSH免密登陆流程

在linux主机node1上,安装ssh的客户端,在linux主机node2上,安装ssh的服务端。那么下图可以理解为配置node1到node2的免密码登录的流程。通俗说就是,在node1主机上的命令窗口中,不用输入node2主机的密码,就能登录node2主机。这就是免密码登录。
在这里插入图片描述

首先看下面~/.ssh中的四个文件:
在这里插入图片描述
id_rsa:保存私钥
id_rsa.pub:保存公钥
authorized_keys:保存已授权的客户端公钥
known_hosts:保存已认证的远程主机ID

[hadoop@hadoop-01 ~]$ ssh-keygen
[hadoop@hadoop-01 .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@hadoop-01 .ssh]$ chmod 600 authorized_keys

这样这三句代码就好理解了。

关于known_hosts

  1. known_hosts中存储的内容是什么?
    known_hosts中存储是已认证的远程主机host key,每个SSH Server都有一个secret, unique ID, called a host key。
  2. host key何时加入known_hosts的?
    当我们第一次通过SSH登录远程主机的时候,Client端会有如下提示:
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)?

此时,如果我们选择yes,那么该host key就会被加入到Client的known_hosts中,格式如下:

 #domain name+encryption algorithm+host key
example.hostname.com ssh-rsa AAAAB4NzaC1yc2EAAAABIwAAAQEA。。。
  1. 为什么需要known_hosts?
    最后探讨下为什么需要known_hosts,这个文件主要是通过Client和Server的双向认证,从而避免中间人(man-in-the-middle attack)攻击,每次Client向Server发起连接的时候,不仅仅Server要验证Client的合法性,Client同样也需要验证Server的身份,SSH client就是通过known_hosts中的host key来验证Server的身份的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值