文章目录
SSH无密登录
1.什么是SSH
SSH全称Secure Shell,用来取代传统telnet和R系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具。
SSH是一种加密协议,不仅在登陆过程中对密码进行加密传送,而且对登陆后执行的命令的数据也进行加密,即使别人在网络上监听并截获了你的数据包,并看不到其中的内容。
SSH服务都是由软件OpenSSH来提供的。绝大多数Linux安装包已自带。
OpenSSH已经是大多数Linux操作系统的标准组件,不需要二次安装
2.工作原理
2.1安全验证机制-登录
-
登陆(账户口令登陆方式)
-
登陆(公钥私钥非对称登陆方式)
2.2密码登录
2.2.1定义
客户端发出授权请求时,服务端要求输入密码进行验证授权
2.2.2工作原理
-
客户端向SSH服务器发出请求,服务器将自己的公钥返回给客户端。
-
客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器。
-
务器接收到客户端传统的密码,用自己的私钥解码。如果结果正确,则同意登录,建立起连接,否则拒绝。
2.2.3运行流程
2.2.4演示示例
客户端A为centos实例172.168.0.3,服务器端B为centos实例172.168.0.4
从客户端A发起链接服务B,接收端服务器端B返回公钥的加密值
输入密码验证身份
- 潜在问题:有漏洞,中间人可以假扮成服务器,骗取客户端的密码。
2.3秘钥登录
2.3.1 定义
客户端发出授权请求时,服务端根据事先配置的密钥验证身份并授权
2.3.2 工作原理
A Client-Server打通公钥传递
-
客户端生成秘钥对,包括公钥、私钥
-
私钥配置在本地,将公钥发送给服务端
-
服务端将客户端的公钥加入到授权列表
B Client 登录 server
-
当客户端请求登陆服务端时,服务器验证客户端的公钥是否存在,并用公钥加密随机字符串RS生成RE,发送给客户端,进行验证。
-
客户端用私钥解密RE后生成结果RD,将结果返回给服务器端。
-
服务器端将RD与之前随机生成的RS比对匹配则授权,否则拒绝
2.2.3运行流程
客户端A为centos实例172.168.0.3;服务端B为centos实例172.168.0.4。
-
先将client-server打通-公钥传递
1.客户端生成公钥私钥对
生成秘钥对 :ssh-keygen -t rsa(一直回车)
查看是否生成: ll ~/ .ssh/
展示结果:
id_rsa 私钥
id_rsa.pub 公钥
2.将公钥以安全的方式传递到服务器端
1.登录服务器端: ssh 用户名@IP
2.传送公钥到服务器端
方法一:
1.将客户端生成的公钥先保存到本地:
sz ~/ .ssh/id_rsa.pub
2.将保存到本地的公钥上传到服务端
rz -bye ~/ .ssh/id_rsa.pub
方法二:
scp -p 22 ~/ .ssh/id_rsa.pub 用户名@IP
(客户端的Ip)
3.在服务端将客户端的公钥加入到授权列表
cat id_rsa.pub >> ~/ .ssh/authorized_keys
-CLient 登录 Server
a) 客户端发出远程登录请求:ssh 用户名@服务器主机名或者IP
b) 服务端查看是否有该客户端的公钥,如果有服务端生成随机字符串,并用公钥加密(就是随机字符串与公钥作某种运算),发送给客户端。
c) 客户端使用本地的私钥对字符串解密(逆运算)。
d) 客户端将解密后的字符串结果发送给服务端。
e) 服务端将解密的字符串与原始字符串匹配,如果相等则验证通过,并授权客户端可以登陆。
4. scp详解
scp就是secure copy,用来在Linux下进行远程拷贝文件到本地,或者从本地拷贝文件到远程的命令。
从本地文件拷贝至远程
[格式]:scp -P 远程ssh服务端口 本地文件路径
远程主机账户@远程主机IP地址或域名:要拷贝到远程主机的路径
[示例]:scp -P 22 ~/input.txt [email protected]:~/
从远程拷贝文件到本地
[格式]:scp -P 远程ssh服务端口 远程主机账户@远程主机IP地址或者域名:要拷贝的远程主机文件的路径 本地文件路径
[示例]:scp -P 22 [email protected]:~/input.txt ~/