SSH
SSH(Secure Shell) :创建在应用层和传输层的远程登录协议
1)sshd:基于SSH协议开发的远程登录守护程序
2)默认占用22端口
//CentOS默认安装
sshd提供两种安全验证:
1)口令验证:通过用户名和密码验证登录;
2)密钥验证:通过密钥对验证登录(服务器持公钥,用户持密钥)
密钥验证登录的流程(公钥已上传至服务器):
1)用户发出登录请求;
2)服务器收到请求后,在该用户的家目录下寻找对应的公钥;
3)在找到公钥后,使用公钥加密一个随机字符串回应给用户;
4)用户通过私钥解密字符串,并将解密结果发送给服务器;
5)服务器对比结果是否正确,是则允许登录(反之拒绝);
//公钥相当于锁、密钥相当于钥匙
1)密文:通过算法将明文信息转换成无法直接理解密文形式
2)密钥:密文的钥匙(能够解密),且有公钥和私钥之分
//传输数据前用公钥对数据进行加密处理,用户接受到数据后使用密钥解密数据,即便他人截获该数据,由于没有密钥也很难破译为明文信息
sshd配置
/etc/sshd/sshd_config文件:sshd的主配置文件
1)通过修改该配置文件实现sshd服务的自定义
2)常用配置参数如下:
参数 | 说明 |
---|---|
Port 端口号 | 指定sshd服务端口号 |
ListenAddress IP | 指定sshd服务器监听的IP地址 |
PermitRootLogin yes/no | 是否允许root管理员远程登录 |
StrictModes yes/no | 远程用户的私钥改变时 是否拒绝登录 |
MaxAuthTries N | 指定最多密码尝试次数为N |
MaxSessions N | 指定最多终端数为N |
PasswordAuthentication yes/no | 是否允许口令验证登录 |
PermitEmptyPasswords yes/no | 是否允许空密码登录 |
ForwardAgent yes/no | 是否启用代理转发 |
Protocol | 指定SSH协议的版本号 |
HostKey /etc/ssh/ssh_host_key | SSH协议版本为1时 DES私钥存储位置 |
HostKey /etc/ssh/ssh_host_key_rsa_key | SSH协议版本为2时 RSA私钥存储位置 |
HostKey /etc/ssh/ssh/ssh_host_dsa_key | SSH协议版本为2时 DSA私钥存储位置 |
//端口号的范围为:0~65535(且端口号不能使用已被其他服务占用的端口)
如:查看/etc/sshd/sshd_config文件
如:设置禁止root管理员远程登录
ssh命令
ssh命令:通过SSH协议安全远程登录服务器
指令格式:ssh 选项 用户名@主机名
1)若省略用户名,则默认为root用户
选项 | 含义 |
---|---|
-b IP地址 | 指定用于发起SSH连接的IP (当主机拥有多个IP时,需指定使用的IP) |
-p | 指定登录端口(默认为22) |
-C | 发送/接受的数据均被压缩 |
-A | 启用代理转发 |
如:使用ssh登录192.168.23.128
ssh-keygen命令:生成密钥
指令格式:ssh-keygen 选项
1)自动生成两个文件,格式分别为:“文件名”、“文件名.pub”,其中前者为密钥文件、后者为公钥文件
//若不指定文件名,则文件名默认为“id_密钥类型”
选项 | 含义 |
---|---|
-t 密钥类型 | 指定密钥类型 (如:rsa1,dsa,ecdsa和rsa等,默认为RSA) |
-b | 指定密钥长度 (DSA最小1024bits、RSA最小768bits) |
-f 文件路径 | 指定用于存储密钥的文件路径 |
如:在客户机上生成密钥对
//以上三个交互都可直接回车(保存至默认路径“~/.ssh”目录下)
ssh-copy-id命令:将客户端机中的公钥文件发送至远程服务器
指令格式:ssh-copy-id 远程服务器IP
如:将ssh-keygen生成密钥对的公钥文件发送至192.168.23.128服务器
ssh-agent命令:启动一个守护进程对私钥进行高速缓存和管理
指令格式:ssh-agent 选项
选项 | 含义 |
---|---|
-k | 杀掉ssh-agent的守护进程 |
1)主要功能:私钥转发、自动尝试存储的所有私钥与远程服务器进行认证
2)系统中仅能存在一个ssh-agent服务
ssh-add命令:将私钥加入到ssh-agent的守护进程管理中
指令格式:ssh-add 选项 密钥文件路径
选项 | 含义 |
---|---|
-D | 删除ssh-agent中所有的密钥 |
-d 文件路径 | 删除指定密钥 |
-L | 显示ssh-agent中已有的公钥 |
-l | 显示ssh-agent中已有的私钥 |
//必须设置SSH_AUTH_SOCK为全局变量(否则和ssh-agent无法建立连接)
scp命令
scp(Secure Copy) :基于SSH协议在网络之间进行安全传输数据的工具
scp命令:通过ssh服务上传/下载文档
指令格式1:scp 选项 本地路径 远程用户@远程IP:远程路径 //上传
选项 | 含义 |
---|---|
-v | 显示进度 |
-q | 关闭进度显示 |
-P | 指定远程主机的sshd端口号 |
-r | 递归传输(用于传输目录) |
-1 | 使用ssh协议版本1 |
-2 | 使用ssh协议版本2 |
-6 | 使用Ipv6协议(默认Ipv4协议) |
如:上传/root/scp_test文件到192.168.23.128服务器的/home目录下
指令格式2:scp 选项 远程用户@远程IP:远程文件 本机路径 //下载
//上传和下载的选项通用
如:下载192.168.23.128服务器中/home/scp_test文件至/tmp目录下
PSCP工具(必须通过CMD命令行运行):通过命令行来传输文档
1)为方便使用,可将PSCP.exe放到“C:/Windows”下(配置成环境变量)
2)pscp属于Windows命令,scp属于Linux命令(效果和用法是一致的)
如:查看pscp用法
指令格式1:pscp 选项 用户名@主机地址:源文档路径 本地路径
1)从主机服务器下载文档到本地
指令格式2:pscp 选项 本地路径 用户名@主机地址:目标路径
1)从本地上传文档到主机服务器
指令格式3:pscp 选项 -ls 用户名@主机地址
1)列出服务器端路径下的结构
screen命令
screen:一款能够实现多窗口远程控制的开源服务程序
1)安装指令:yum install -y screen
//Centos7默认不安装该服务
screen特点如下:
1)多窗口:用户在一个终端下调用多个窗口工作,各个窗口相互独立;
2)操作隔离:各个窗口下操作都被分开隔离保存(便于查错);
3)会话恢复:用户使用窗口时,若网络异常导致中断,下次调用时可直接恢复//screen会自动记录当前窗口的详细信息,用户不会失去对远程会话的控制);screen程序若被停止,就不能实现会话恢复
4)会话共享:多个用户登录同一远程服务器时,可实现输出输入信息共享
screen命令:实现多窗口远程控制(解决网络异常终端)
指令格式1:screen 选项
选项 | 含义 |
---|---|
-S 会话窗口名 | 新建会话窗口 |
-d 会话窗口名 | 使指定窗口离线 |
-r 会话窗口名 | 恢复指定会话窗口 |
-x | 恢复所有会话窗口 |
-ls | 列出已有的会话 |
-wipe | 移除所有无法使用的会话 |
//新建会话窗口后,屏幕会闪一下并进入该会话窗口
如:新建“test”会话窗口
如:列出当前已有的会话
//“Detached”代表该会话被中断,且可恢复
指令格式2:screen 命令
//调用screen执行指定命令,执行完成后自动结束该会话,同时记录该命令在会话时的所有操作
会话共享实现步骤:
1、 共享终端连接服务器并创建会话;
2、 其他终端连接服务器并同步终端信息;
如:实现会话共享功能的流程