一、SSH服务
1.1 SSH
- SSH(Secure Shell)是一种安全通道协议,主要用于实现字符界面的远程登录、远程复制、类似于ftp功能。以上三个默认端口都是22,可修改
- SSH协议对通信双方的数据传输进行了加密处理,包括用户登录的口令输入
- SSH的数据传输基于TCP协议,对数据传输加密、压缩,从而提高传输速率
ssh客户端---------------ssh服务端(22)
1.2 SSH协议
- 客户端:xshell moba
- 服务端:OpenSSH是SSH协议的开源热案件,适用于各种UNIX、Linux操作系统。
注:Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/sshd_config
客户端配置文件:/etc/ssh_config
1.3 SSH组成结构
- 远程连接
- 远程登录
- 安全文件传输协议
- 传输层协议:提供加密技术,密码主机认证。只做主机认证,不执行用户认证
- 用户认证协议:运行在传输层之上,开始认证用户之后,从底层的会话标识接收会话的标识符,认证会话标识符的所有权。建立私钥,进行安全通信,只认证用户,不负责处理连接。
- 连接协议:处理最终的连接请求,运行在用户认证协议之上,提供了交互登录界面,远程命令,数据转发。
1.4 远程登录
虚拟机以命令行的方式远程登录(登录后,操作对本机无影响,exit退出!用完后立即退出!)
1.4.1 默认端口号
[root@localhost ~]# ssh root@192.168.247.21 ##默认端口号22
##root不是本机用户,是21的用户
##@固定格式
##192.168.247.21要登录的服务器的IP地址
1.4.2 指定端口号
[root@localhost ~]# ssh -p 1122 root@192.168.247.22
##-p:指定端口
更改端口号:
- 进入服务端配置文件
- 重启服务,服务报错!!!
- 查看运行日志,发现SELinux安全机制未关!!!然后关闭安全机制!!!
- 通过另一台主机登录
1.4.3 远程登录的访问控制
AllowUsers ##允许登录的用户,相当于白名单,允许指定,拒绝所有
DenyUsers ##禁止登录的用户,相当于黑名单,拒绝指定,允许所有
例:AllowUsers aa bb@192.168.233.20
##允许aa用户登录
##用户bb只能通过192.168.233.20IP登录
##多个用户用空格隔开
注:不能将同一个用户,既允许也拒绝
- 对服务端配置文件/etc/ssh/sshd_config进行配置
- 验证:
1.5 远程复制
scp远程复制:从别的主机将文件或者目录,复制到主机
#默认端口
[root@localhost /]# scp root@192.168.247.22:/opt/1.txt /opt/rh
##scp 远程复制命令
##192.168.247.22 要登录的IP地址
##/opt/1.txt 复制的文件位置
##/opt/rh 粘贴的文件位置
#已更改端口
[root@localhost /]# scp -P 1122 root@192.168.247.22:/opt/1.txt /opt/rh
##-P 指定端口
##-r 复制目录
1.6 安全文件传输协议(sftp)
sftp:使用了基于ssh协议(端口号22)的加密解密技术,所有传输效率比传统的ftp要慢,但是安全性更高,操作语法与ftp一样
#默认端口
[root@localhost /]# sftp root@192.168.247.20
#指定端口
[root@localhost /]# sftp -P 1122 root@192.168.247.20
- 先在test1/opt/下创建120.txt文件;在test2/opt/下创建130.txt文件
- 在test1中使用sftp连接test2,将test2/opt/下130.txt下载到test1的/opt/目录下
- 将test1/opt/下130.txt上传到test2/opt/ky30目录下
- 切换到test2/opt/ky30查看
二、密钥对验证
前言:因为服务器的密码可以通过暴力破解的方式进行破解,所有产生了更加安全的密钥对,必须提供匹配的密钥信息才能通过密钥验证
2.1 工作方式
- 在客户端创建一个密钥文件
- 密钥文件传送到服务短的指定位置
- 远程登陆时,系统将使用密钥进行验证,实现免交互登录。增强了一定比的安全性
注:密码和密钥对都开启,服务器会优先使用密钥对验证
2.2 加密方式
- ecdsa (主流)
- rsa
- dsa
2.3 实验
[root@localhost ~]# ssh-keygen -t ecdsa
##keygen 设置密钥
##-t ecdsa 指定加密方式
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# ls
id_ecdsa id_ecdsa.pub known_hosts
##id_ecdsa 私钥文件
##id_ecdsa.pub 公钥文件
1.先在客户端生成密钥文
2.进入存放路径,将公钥文件传入服务端
- ssh-copy-id :把本地主机的公钥复制到远程主机的 authorized_keys 文件中
3. 实现免交互登录
- ssh-agent bash :用于启动一个新的 Bash shell,并在该 shell 中启动 SSH Agent。SSH Agent 是一个身份验证代理,用于管理和缓存 SSH 密钥,可以在需要时自动提供身份验证,从而实现免密码登录等功能
- ssh-add :将 SSH 私钥添加到 SSH Agent 的命令。SSH Agent身份验证代理,管理和缓存SSH密钥