跳到主要内容

26、Linux 实战:Linux-SSH

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、 其他终端连接服务器并同步终端信息;

如:实现会话共享功能的流程