ssh服务原理+命令+scp命令和rsync命令

SSH是一种安全的远程登录协议,使用TCP的22端口,提供加密通信以替代不安全的telnet。它涉及公钥交换来确保连接安全,且支持SCP和rsync进行加密文件传输。SCP简单但全量复制,而rsync更高效,仅同步差异数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓ssh: 就是secure shell protocol, 22/tcp, 安全的远程登录,实现加密通信,代替传统的 telnet 协议

SSH服务默认使用TCP的22端口,SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议

v1 基于CRC-32做MAC,不安全;man-in-middle

v2 双方主机协议选择安全的MAC方式,基于DH算法做密钥交换,基于RSA或DSA实现身份认证

在目前生产中,这是常用,而且非常重要的一个工具。

首先了解下原理

公钥交换原理

1. 客户端发起链接请求

2. 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

3. 客户端生成密钥对 ----- 没有实体文件

4. 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

5. 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res

6. 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

7. 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都加密

这里需要了解的是:”验证链接的是否正确的主机:对比他们的哈希值即可

Ssh加密通讯原理

客户端ssh命令

格式    ssh [options...] destination [command]

#常用选项

-p PORT                                                           #指定远程服务器的端口,默认22

-b IP                                                                   #指定本地主机此次连接使用的IP

-v                                                                       #调试模式,可以追踪此次连接的过程

-C                                                                      #开启压缩

-F configfile                                                      #指定客户端配置文件

-t                                                                       #强制伪终端分配,可用于在远程系统上执行任意基于屏幕的程序

-o option                                                            #以K=V格式指定选项

-i <file>                                                               #指定私钥文件路径,实现基于key验证

sh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问

当用户远程连接ssh服务器时,会复制zssh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机的

~/.ssh/know_hosts中。下次连接时,会自动匹配相对应的私钥,不能匹配,将拒绝连接。

首次连接,会显示目标主机的指纹信息,并提示是否继续

#敲yes后会将目标主机的公钥保存在当前用户的~/.ssh/know_hosts 文件中

在客户端机器上可以看到远端主机的公钥

root@ubuntu2204:~# ls -l .ssh/

首次连接时并不能确定远端主机的真伪,但是下载公钥之前可以查看远端的指纹信息

#在连接前,可以先自己连自己,查看一下指纹

将 10.0.0.206 加到其它主机上,将原主机关闭

# ip a a 10.0.0.206/24 dev eth0

# ip a s eth0

#首次连接之后,如果保存了远程主机的公钥,后续远程主机发生了改变,则会提示

#如果远程主机确实发生了改变,则可以删除本地~.ssh/know_host中的对应的公钥

首次连接会下载远程主机公钥

#如果不指定用户名,默认使用当前用户去登录远程主机

在进行远程操作之前,准备工作不可少,提前配置好本地源,安装好所有应用工具,比如vim、 ssh、rsync

我用两台主机作为试验机,

主机是centos 8的系统

另外一台是centos7的系统

EG:

#指定本机IP去连远程主机

~# ssh -b 10.0.0.220 root@10.0.0.150

先连接到,再从1连接2

#ssh -t 1目标ip1 ssh -t 目标ip2

查看

#ss -tn

断开先断2  >>  1

#exit

但是ssh最让很多人使用的原因,可能是它下面的这个功能

SCP命令

用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的

格式:scp [options] SRC... DEST/

#常用选项

-C #压缩数据流

-r #递归复制

-p #保持原文件的属性信息

-q #静默模式

-P PORT #指定远程服务器的端口,默认22

EG:三种复制

本地文件复制到远程

#scp /root/test.sh root@10.0.0.151

远程主机文件复制到本地

#scp root@10.0.0.151:/home/jose/test.sh

源和目标都不是本机

#scp jose@10.0.0.157:test.sh root@10.0.0.154:

复制目录

# scp -r /var/log/ root@10.0.0.161:/tmp/  

scp -r dir dest/   复制整个目录

scp  -r dir/ dest/  复制整个目录

scp -r dir/* dest/     复制目录下的所有文件

EG:

1,在data下执行dd if=/dev/zero of=f1.img bs=1M count=100 连续三次 创建f1 f2 f3三个文件

2,然后创建一个文件夹test 将三个文件都放进文件夹

执行:mv f test/ (说明:f后面的是通配符,f*意思是 所有f开头的文件)**

3.执行: scp -r test/ 10.0.0.3:/data {需要注意的是这里加-r (递归) 意思是将文件夹文件一起拷贝 而3后面的是冒号 :不是分号}

从下图看出,包括文件夹和三个文件,在输完密码后都全部拷贝到了10.0.0.3这台centos7的主机上:

4,这个时候查看ip为10.0.0.3的centos7的主机,可以清楚的看到刚刚从centos8拷贝过来的文件.

5:这个SCP的拷贝方法,感觉确实很好用,

但是如果出现数据变化的情况,如下图

变化前

执行操作,echo >>f1.img让f1.img文件数据变化

变化后

执行scp拷贝:

当其中一个文件数据更新了后,要进行更新,执行后会发现,只是其中一个文件有变化,但是它还 是全部拷贝了一遍,这样是非常低效率的,而cp 命令在复制文件时是全量复制,不管文件有没有改动,都是复制,速度慢,消耗资源

而rsync工具可以基于ssh和rsync协议实现高效率的远程系统之间复制文件,使用安全的shell连接做为传输方式,比scp更快,基于增量数据同步,即只复制两方不同的文件,此工具来自于rsync包

(通信两端主机都需要安装 rsync)

个人看来 rsync之所以优于scp的一点在于,它只拷贝更新后的数据。

主要用法

rsync -av /etc server1:/tmp #复制目录和目录下文件

rsync -av /etc/ server1:/tmp #只复制目录下文件

{ rsync -av dir dest/ #复制整个目录

rsync -av dir/ dest/ #复制目录下所有文件

rsync -av dir/* dest/ #复制目录下所有文件}

增量复制***

# cp /var/log/syslog ./0525

#ll -l ./0525

只复制了新增的syslog 文件

rsync -av /root/0525 root@10.0.0.151:/tmp/

查看目标机 0525属性更新了

ll /tmp/0525/

只复制目录下的文件,不复制目录****

# rsync -av /root/0525/ root@10.0.0.151:/tmp/dira/

EG:

1:只更新f1文件的数据 ,执行命令 rsync -av /data/test/ 10.0.0.3:/data

只有有数据变更的f1被拷贝:

在centos7里查看拷贝结果,已经拷贝成功

*****:test后不加加/ 表示文件夹一起复制,加/只是复制里面的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值