一、SSH远程管理
1.1 ssh 是什么
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议
1.2 ssh 客户端和服务端
SSH客户端: Putty、 Xshell、 CRT、MobaXterm、FinalShell
SSH服务端: OpenSSH
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统
1.3 对称加密和非对称加密
对称加密(Symmetric Encryption)
- 会话密钥:对称加密使用相同的密钥进行加密和解密。这种加密方式比非对称加密更高效,适合大数据量的传输。
- 数据传输:在 SSH 连接建立并验证身份后,客户端和服务器使用协商好的会话密钥进行对称加密,以保证数据在传输过程中的机密性和完整性。
非对称加密(Asymmetric Encryption)
- 密钥对:非对称加密使用一对密钥:公钥和私钥。公钥用于加密,私钥用于解密。两者是数学上相关联的。
- 身份验证:在 SSH 连接建立的过程中,客户端和服务器使用非对称加密来验证对方的身份。具体过程如下:
- 服务器向客户端发送其公钥。
- 客户端使用服务器的公钥加密一个随机生成的会话密钥,并将其发送给服务器。
- 服务器使用其私钥解密会话密钥
1.4 公钥和私钥简介
- 公钥(Public Key):可以公开给任何人,用于加密数据或验证数字签名。
- 私钥(Private Key):必须保密,仅由持有者自己掌控,用于解密数据或创建数字签名。
1.4.1 公钥和私钥的工作原理
-
加密与解密
- 加密:公钥用于加密数据,任何拥有公钥的人都可以对数据进行加密。
- 解密:私钥用于解密数据,只有拥有私钥的人可以解密由公钥加密的数据。
流程:
- 发送者使用接收者的公钥加密消息。
- 接收者使用自己的私钥解密消息。
1.4.2 公钥和私钥的应用场景
SSH(Secure Shell)
-
- 公钥:存储在服务器上的
~/.ssh/authorized_keys
文件中。 - 私钥:存储在客户端的本地计算机上,通常在
~/.ssh/id_rsa
文件中
- 公钥:存储在服务器上的
1.5 ssh 工作原理
客户端 服务器
| |
|-------- 请求连接 --------------->|
| |
|<------- 发送公钥 ----------------|
| |
|-------- 交换密钥 --------------->|
| |
|-------- 服务器验证 ------------>|
| |
|-------- 用户认证 --------------->|
| |
|<------- 验证成功 ----------------|
| |
|<==== 开始加密通信 =====>|
1.6 OpenSSH服务器
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动
- 服务名称:sshd
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd config
二、SSH 远程登录方式
2.1 ssh 直接远程登陆
ssh 远程主机用户名 @远程服务器主机名或IP地址
2.2 ssh 指定端口登录
ssh 远程主机用户名 @远程服务器主机名或IP 地址 -p 端口
2.3 黑白名单设置
在 SSH 服务器配置文件 /etc/ssh/sshd_config
中,可以使用 AllowUsers
和 DenyUsers
指令来控制访问
配置白名单:
vim /etc/ssh/sshd_config
添加 AllowUsers 用户
黑名单配置:
DenyUsers 用户
2.4 基于密钥登录
使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让 ssh 服务基于密钥进行安全验证(可无需密码验证)
创建密钥:
ssh-keygen -t rsa 生成密钥对 拷贝出rsa
传输密钥:
ssh-copy-id root@192.168.192.10 拷贝密钥传给对端
在服务端查看已经收到的密钥文件,cat /root/.ssh/ 会生成一个authorized_keys的文件
vim /etc/ssh/sshd_config 修改终端登陆配置
systemctl restart sshd 重启网络服务
登陆时不用输入密码
三、远程传输方式
3.1 sftp安全性传输
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。
sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分
在服务端的/opt 下有一个 pkm.txt 文件
在客户端sftp登录到对端
下载文件:
get 指定文件 指定对端目录
上传文件:
put 指定文件 指定对端目录
3.2 scp 复制
scp:scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的
scp 文件 对端 :指定目录 将选定文件拷贝到对端目录下
scp 对端 :指定文件 本机指定目录 将服务端文件拷贝到本机指定目录下