因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立互信关系实现免密登录。关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下连接和免密登录的原理。
是系统下基于登录进行安全的远程文件拷贝的命令。
远程拷贝的命令还有,消耗资源少,不会提高多少系统负荷,在这一点上,就远远不及它了。比会快一点,但当小文件多的情况下,会导致硬盘非常高,而基本不影响系统正常使用。
与相似的命令是,但是只能本机拷贝而不能跨服务器,因此需要与合作构成命令。
我们直接使用来跨机器拷贝文件,会提示输入密码:
原因就在于,是先使用连接服务端机器后,再使用网络来执行远程拷贝。
可以参考的过程:
(安全外壳协议,简称)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。通过在网络中创建安全隧道来实现客户端与服务器之间的连接。虽然任何网络服务都可以通过实现安全传输,最常见的用途是远程登录系统,人们通常利用来传输命令行界面和远程执行命令。
使用十分简单,选择以什么用户连接哪台机器,然后输入密码即可:
的主要有点就是安全性,安全性依赖于加密方式,现在主要的加密方式有两种:对称加密和非对称加密。
由于对称加密的这个弊端,产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。
初始状态:终端要登录服务器,发起连接请求
- 服务端运行有服务,并持续监听号端口,因此可以生成一对公钥和私钥;此时将公钥返回给客户端
- 客户端使用公钥,对登录密码进行加密,(如服务器用户密码为),生成公钥加密字符串
- 客户端将公钥加密字符串发送给服务端
- 服务端使用私钥,解密公钥加密字符串,得到原始密码
- 校验密码是否合法(此为本机密码)
- 返回登录结果给客户端:成功登录或密码错误
在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。
那么采用了非对称的加密方式,是怎么解决这个问题的呢?
在这个认证信息中,可以看到提示:无法确认主机的真实性,不过知道它的公钥指纹,是否继续连接?
输入继续连接后,就会确认该服务器为可信任服务器,然后添加到文件中,下次不用再次确认,然后跳转到输入密码的验证阶段。这种简单粗暴的方式相当于让我们肉眼比对来判断目标服务器是否是真实服务器,我觉得并不是最理想的方式,希望后续会有更完美的认证方式。
之所以用(公钥指纹)代替,主要是过于长( 算法生成的公钥有位),很难直接比较。所以,对公钥进行生成一个位的指纹,这样就方便比较了。
我们已经掌握如何使用登录远程服务器了,但是每次登录都要输入密码,比较麻烦。提供一种免密登录的方式:公钥登录。
- 在客户端使用生成一对密钥:公钥+私钥
- 将客户端公钥追加到服务端的文件中,完成公钥认证操作
- 认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端
- 服务端检索文件,确认该公钥是否存在
- 如果存在该公钥,则生成随机数,并用公钥来进行加密,生成公钥加密字符串
- 将公钥加密字符串传递给客户端
- 客户端使用私钥解密公钥加密字符串,得到
- 服务端和客户端通信时会产生一个会话,用对进行加密,生成摘要(即加密字符串)
- 客户端将生成的加密字符串传给服务端
- 服务端同样生成加密字符串
- 如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功
- 此时不用输入密码,即完成建连,可以开始远程执行命令了
是生成密钥的工具,执行完成后生成公钥和密钥,这两个文件会默认保存在路径下。常用的参数为:
- 指定生成密钥类型。默认为
- 指定存放私钥的文件,公钥文件名为私钥文件名加后缀。默认为
- 指定(私钥的密码),用于确保私钥的安全。默认为空
- 备注。默认为
我们直接执行来生成密钥,所有的参数都可以为空,也就是一直回车确认:
此时,生成的文件在目录(权限建议是755,不能是777)下,我们会看到这些文件:
因为一台机器即能是客户端,又能是服务端,因此同时存在(在该机器为服务端时使用)和(在该机器为客户端时使用)。
我们的服务器会有很多的用户,如果所有的用户都用同一份密钥,可能就没办法划分权限或者区分用户,如多个用户提交就需要按照用户名来生成密钥,用于区分用户。同时你可能也希望针对不同的服务器使用不同的密钥对,因此需要配置文件来配置针对不同服务器的配置:
这样在连接不同的服务器时,就会使用不同的密钥文件来登录。
在客户端生成密钥对之后,将公钥追加到服务器的文件中即可。
此时,即可免密登录服务器。
假设你已经实现了服务器集群的免密登录,那么如果你的一台客户端被攻击成功了,那么整个集群的安全性便荡然无存了。因此,我们有时还需要对密钥做安全性保障,即设置私钥密码:
此时,各机器仍然是免密登录,但是需要你输入私钥密码:
阅读原文
- RUNOOB-Linux scp命令:http://www.runoob.com/linux/l...
- linux-doc scp跨机远程拷贝:https://linuxtools-rst.readth...
- 维基百科 Secure Shell:https://zh.wikipedia.org/wiki...
- 简书 图解SSH原理:https://www.jianshu.com/p/334...
- CSDN scp在linux中实现两台主机传件--互信无需输入密码: https://blog.csdn.net/posonri...
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/34707.html