关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程
  R6ZO6z1TYi7r 2023年11月02日 110 0

远程:

*在日常使用中,windows系统可以使用远程桌面来管理远程的windows操作系统

*而在Linux上,可以使用openssh套件来进行管理(默认安装)

在openssh上是使用安全加密的套接字通信方式

openssh:

openssh是一个典型的C/S架构,同时拥有openssh-clent客户端以及openssh-server服务端,如下所示:

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_客户端

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_用户名_02

通过ssh登陆:

ssh root@192.168.161.129
#或者
ssh -X root@192.168.161.129
#ssh -X 是用来转发X11的显示协议(一些GNOME/KDE等图形化的软件都是基于 X11的窗口来进行的开发)
#X11 的变量保存在 DISPLAY=:0中,其中默认为0是代表的显示器
#或者
ssh 用户名@ip ‘执行的命令’ 
#表示仅仅只是远程执行命令,并不登录系统

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_用户名_03

#所以从这里可以看出,使用ssh连接对方机器的格式为“用户名@对方机器的ip地址“或者ip地址也可以替换为主机名,但是需注意,如果是主机名那么这个主机名一定要可以解析为ip地址(如对方主机名无法正常解析,可通过绑定/etc/hosts 来指定主机名解析ip)

#并且,第一次连接,需要接收对方的主机公钥才可以正常连接

通过ssh来进行文件传输:

ssh的文件传输功能是通过scp来做,而scp则是利用了ssh的远程通道来实现的文件传输

scp常见的用法:

将本机的文件拷贝到远程服务器

格式:scp 本地的目录/文件 用户名@远程主机:/路径

scp nginx-1.25.1.tar.gz root@192.168.161.129:/tmp

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_主机名_04

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_客户端_05

将远程的文件拷贝到本机的opt/

scp root@192.168.161.129:/tmp/nginx-1.25.1.tar.gz /opt 

一些常见操作:

#拷贝目录 -r
scp -r /opt root@192.168.161.129:/tmp #-r 选项则为目录
#保留时间戳和权限 -p
scp -rp /opt root@192.168.161.129:/tmp/opt1
#指定端口号 -P (ssh默认使用22作为标准端口==生产环境一般不会使用22端口,安全第一)
scp -P 1111 1.txt root@192.168.161.129:/tmp
### scp 中 -P 为指定端口号 ssh 中 -p 为指定端口号
# 压缩传输 -C ==》提升传输性能
scp -P 1111 -C 1.txt root@192.168.161.129:/tmp
#推荐在数据量较大的情况下使用,因为压缩操作本身就会占用一定时间,如果数据量并不大,那么效果可能不如不压缩

rsync 远程同步:

#rsync通常用在linux系统之间或本机与系统之间复制和同步文件。rsync优势就是可以按照需求去更新目标文件夹,只去复制已更改或新增的文件,也可以删除源文件夹中已不存在的文件。

本地用法:rsync 选项 源路径 目标目录

rsync -a /tmp/ /test/
#在rsync 中 a = archive 表示归档模式,在该模式传输时会保持文件的所有属性
#和权限,包括时间戳,用户权限等等,并且该模式还会递归去复制子目录和文件,保
#持他们的所有属性不变

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_客户端_06

远程用法:rsync 选项 源路径 目标目录

#将本地同步到对端
rsync -r /opt root@192.168.161.129:/tmp
#-r 代表同步目录,后面接的是目录文件,并且默认不会同步链接文件
#如果需要同步链接文件,可以使用 --links 或者 -l 参数来实现
#从对端同步到本地
rsync -a root@192.168.161.129:/tmp/ /opt/
#如果对端为非22标注端口同步方式
rsync -a -e 'ssh -p 1111' root@192.168.161.129:/tmp /tmp

#注:在使用rsync同步时,需要注意源路径的两种写法:

1,/opt 表示同步目录本身

2,/opt/ 表示同步目录下的文件

#常用选项

-v:显示rsync传输过程的的详情,使用 -vvv 获取的信息将会更详细
-n:测试传输,但不实际传输
-a:归档模式,传递并保留文件属性
-t:保持mtime属性
-o:保持owner属性
-g:保持group属性
-p:保持perms属性(不包括特殊权限)
-D:是“--device --specials”选项的集合,表示拷贝设备文件和特殊文件
-l --links:如果文件是软连接则拷贝软连接本身
-z:传输时进行压缩
--delete:已源文件为主,对目标文件进行同步。少补多增。
--existing:只更新目标端已存在的文件,如果文件不存在,则不传输
--ignore-existing:与 --existing 相反,只更新目标端不存在的文件
--remove-source-files:删除源端已成功传输的文件

ssh的认证方式:

#在ssh的认证方式中,主要为两种,第一种为密码认证,第二种为秘钥认证,这两种所使用的认证方式统一为非对称加密来进行认证

在目前场景,所有的远程密码都是进行过加密的(防止被抓包获取到信息),如下图所示,所使用的为SSH第二代加密验证方式(第一代有BUG。。。可以导致秘钥被重置):

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_用户名_07

加密的方式:

1、对称加密

秘钥(加密的介质)+ 编码的方式(算法)==》一起进行传输 == 对称加密(秘钥加密)

此类方法在目前场景中很容易被中间人盯上,一般出现在网段内部等等。。

弊端:加密和解密所使用同一把秘钥

2、非对称加密

源端:只有公钥 (加密的介质)

目标端:拥有公钥+私钥(解密的介质)

源端向目标端发起需要发送内容的请求,目标端会传递给源端公钥(指纹信息)

源端:公钥加密消息内容 ==》传输到目标端 ==》目标端通过私钥解密

注:公钥只能进行加密,无法进行解密,所以即使中间人获取到了公钥以及加密后的消息也无意义

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_主机名_08

#如上图所示,首次ssh远程链接会发送给对端ECDSA的公钥,也叫指纹信息,而加密方式(编码方式)则为 SHA256 的算法

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_主机名_09

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_redhat_10

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_用户名_11

#公钥以及私钥存放位置为 /etc/ssh 下,如上图所示 ssh_host_ecdsa_key 为私钥,ssh_host_ecdsa_key.pub 为公钥

#当首次链接输入yes确认链接之后,客户端就接收了服务端主机的公钥,而主机的公钥存放在用户家目录下 .ssh/know_hosts 文件中(每一行都是一个主机的公钥),接收完公钥,下次在ssh去链接主机时,则无需确认指纹信息(如果把该文件删除,则还需接受一次指纹信息,因为没有公钥无法进行加密

注:实际上ssh每一次都会发送一次公钥,与你本机 .ssh/know_hosts 中的公钥去进行比对,如果你本机上的公钥进行了修改,那么会提示重新接收一次指纹信息,在.ssh/know_hosts 中重新生成一条公钥,如果没去修改则无需再次接收

秘钥认证(免密认证/ssh互信==》登录时不需要密码):

第一步:客户端需要生成一组公钥私钥(谁生成,谁保管

ssh-keygen #其中保存位置如图所示在 .ssh/id_rsa.中

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_客户端_12

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_用户名_13

第二步:客户端发送自己生成的公钥给服务器

ssh-copy-id user@192.168.161.128 #发送公钥时需要输入发送用户的登陆密码

#注:发送个了哪个用户,登陆哪个用户才不需要密码,登陆其他用户依然需要密码

#注:公钥默认保存在发送用户的家目录下 .ssh/authorized_keys 文件中,每个公钥单独占一行(公钥但凡有任何修改,则该公钥失效

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_用户名_14

第三步:正常登陆就不需要秘钥了

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_主机名_15

#注注注:私钥谁生成谁保管,永远不会在公网中流通

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月11日   14   0   0 nginx客户端服务端
  jnZtF7Co41Wg   2023年12月09日   15   0   0 客户端服务端数据
  jnZtF7Co41Wg   2023年12月10日   16   0   0 nginx客户端服务端NFS
  aYmIB3fiUdn9   2023年12月08日   38   0   0 客户端IPNATlvs
  38gcbVXUBcLA   2023年11月25日   16   0   0 服务器客户端HTTP
R6ZO6z1TYi7r