SSH:安全通道协议
主要实现字符界面的远程登录,远程复制,类似于ftp的功能
端口号都是22,这是默认端口,可以修改
通信双方为了防止数据泄露,数据传输都进行了加密处理,包括用的登录用户登录的口令输入,数据传输的同时也是压缩的,可以提高传输速度
Openssh:
openssh是ssh协议的开源软件,系统自带,而且已经设置开机自启
ssh_config : 针对客户端进行配置
sshd_config : 针对服务端进行配置
SSH的组成结构:
远程连接 、远程登录,安全文件传输协议sftp,都是openssh的一部分
由三个部分组成:
传输层协议:服务器认证,保密性以及完整性
- 数据压缩 ssh-trans:提供加密技术,密码主机认证,只做认证主机,不执行用户认证
用户认证协议 :ssh-userauth
- 运行在传输层协议之上,开会时认证用户之后,从底层的会话标识接受绘画的标识符,认证会话标识符的所有权,建立私钥,进行安全通信
连接协议:ssh-conncet
- 处理最终的 连接请求,运行在用户认证协议上,提供了交互式登录界面远程命令,数据转发
命令行格式远程登陆:
例 : ssh root@192.168.86.33 #远程连接192.168.86.33 这个IP地址
root :不是本机的用户,是192.168.86.33 的用户
@ :固定格式
注 :如果要指定端口号,需要加 -p(小写)
例 : ssh -p 10022(修改后的端口号) root@192.168.86.33
SSH的访问控制:
命令 : vim sshd_config
底行添加
AllowUsers 用户 #表示允许用户建立连接
DenyUsers 用户 #表示拒绝用户建立连接
例 :
AllowUsers zhangsan #表示允许zhangsan用户建立远程连接
AllowUsers zhangsan@192.168.86.33 #表示允许zhangsan用户建立连接,但只能通过192.168.86.33这个IP
DenyUsers zhangsan #表示拒绝zhangsan用户建立连接
注 :多个用户之间要用空格隔开
远程复制:scp
- 把别的主机的文件或目录复制到本机上
命令 :scp root@目的连接IP:/文件或目录 /复制到本机的路径
例 : scp root@192.168.86.33:/opt/123.txt /opt
#表示将192.168.86.33这个主机的opt目录下的123.txt的文件复制到本机的opt目录下
192.168.86.33 #表示要连接的主机地址
/opt/123.txt #表示要连接的主机的文件或目录
/opt #表示复制到本机的目录
-P(大写) #表示指定端口号
-r #表示复制目录
远程传输 :sftp
- 更加安全的ftp,使用了基于ssh协议加密的技术,所以传输效率比一般的ftp慢,但安全性更高下载和上传和ftp一样
步骤:
需要两台服务器 test2 、test3
先在test2 创建文件,使用test3远程传输连接test2
使用test3 将test2上创建的123.txt 远程下载到本机上 并进行查看
在test3上创建aaa.txt文件, 使用test3 将test3上创建的文件远程上传到test2上 并进行查看
SSH密钥对验证:
- 服务器用户的密码可以通过暴力破解的方式破解,因此就产生了密钥对,要求提供匹配的密钥信息才能通过验证
工作流程 :
- 在客户端创建一个密钥文件
- 将密钥文件传送到服务端的指定位置
- 远程登录时,系统将使用密钥对进行验证 ,实现免交互登录
- 系统的密码验证和密钥对验证默认都是开启的,系统会有限进行密钥对验证
密钥加密的方式:
ecdsa 、rsa 、dsa 三种,一般使用ecdsa
命令 :
ssh -keygen -t ecdsa #生成ecdsa的密钥对
生成后有两个文件 : id_ecdsa #表示私钥文件
id_ecdsa.pub #表示公钥文件
ssh-copy-id -i id_ecdsa.pub root@192.168.86.33 #本地主机的公钥复制到192.168.86.33上
ssh-agent bash #用于启动一个新的 Bash shell 并在该 shell 中启动 SSH Agent
ssh-add #将SSH私钥添加到SSH Agent的命令SSH Agent身份验证代理,管理和缓存SSH密钥
实验:
实现免交互登录