首页 > 系统相关 >关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程

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

时间:2023-07-24 20:03:32浏览次数:30  
标签:10 公钥 process oss linux --- ssh 菜鸡 image

远程:

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

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

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

openssh:

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

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

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

通过ssh登陆:

ssh [email protected]
#或者
ssh -X [email protected]
#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 [email protected]:/tmp

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

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

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

scp [email protected]:/tmp/nginx-1.25.1.tar.gz /opt 

一些常见操作:

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

rsync 远程同步:

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

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

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

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

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

#将本地同步到对端
rsync -r /opt [email protected]:/tmp
#-r 代表同步目录,后面接的是目录文件,并且默认不会同步链接文件
#如果需要同步链接文件,可以使用 --links 或者 -l 参数来实现
#从对端同步到本地
rsync -a [email protected]:/tmp/ /opt/
#如果对端为非22标注端口同步方式
rsync -a -e 'ssh -p 1111' [email protected]:/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远程_redhat_08

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

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

关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程_主机名_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远程_redhat_13

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

ssh-copy-id [email protected] #发送公钥时需要输入发送用户的登陆密码

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

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

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

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

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

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

标签:10,公钥,process,oss,linux,---,ssh,菜鸡,image
From: https://blog.51cto.com/u_16170308/6838380

相关文章

  • 15个实用的Linux find命令示例
    译文出处:oschina-青崖白鹿。欢迎加入技术翻译小组。<!--divid="ad1"><scripttype="text/javascript">google_ad_client="ca-pub-7056282119617872";google_ad_slot="6645040531";google_ad_width=300;google_ad_height=250......
  • C语言分支与循环(7)--- do...while()循环
    一.do语句的语法do循环语句;while(表达式);我们可以发现do后面的循环语句一定会被执行一次,随后再去执行while()循环语句,去判断表达式,如果为真则返回do语句继续执行,若为假则不进入do语句循环,如以下代码:#include<stdio.h>intmain(void){ inti=0; do { printf("%d",i);......
  • tokyotyrant-java客户端
    目录:概述演示[一]、概述java实现了对ttserver服务端的连接和访问。相关的源代码和jar包可以到其官网下载。官网地址:http://code.google.com/p/tokyotyrant-java/如果是maven构建项目的,在pom.xml的<dependencies>节点中增加如下依赖配置即可:1 <dependency>2<groupId>......
  • CTFer成长记录——CTF之Web专题·bugku-啊哒
    一、题目链接  https://ctf.bugku.com/challenges/detail/id/6.html?id=6二、解法步骤  打开图片:  显示完整,似乎没有文件高度的问题。右键查看属性——>文件详细信息:发现一串16进制数:尝试转换成字符串:https://www.sojson.com/hexadecimal.html  得到:sdnisc_20......
  • Linux 网络收包流程
    哈喽大家好,我是咸鱼我们在跟别人网上聊天的时候,有没有想过你发送的信息是怎么传到对方的电脑上的又或者我们在上网冲浪的时候,有没有想过HTML页面是怎么显示在我们的电脑屏幕上的无论是我们跟别人聊天还是上网冲浪,其实都依靠于计算机网络这项技术计算机网络是指将多台计算机......
  • Linux系列---【Aerospike的介绍】
    Aerospike的介绍工作模式默认:混合闪存,支持HDD(机械硬盘)和SSD(固态硬盘),推荐SSD,性能好。......
  • Tool-Gitlab-备份恢复-迁移
    Tool-Gitlab-备份恢复-迁移备份sudogitlab-rakegitlab:backup:create使用命令会在/var/opt/gitlab/backups目录下创建一个压缩包,这个压缩包就是Gitlab整个的完整部分。需要在gitlab运行时操作。gitlab.rb和gitlab-secrets.json两个文件包含敏感信息。未被备份到备份文......
  • Linux | export 命令
    Linuxexport命令是一个Bash命令,用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量,如PATH、PYTHONPATH等。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法export[-fnp][变量名称]=[变量设置值]......
  • Code-OpenSource-JSON for Modern C++ v3.10.5
    Code-OpenSource-JSONforModernC++v3.10.5github.com/nlohmann/jsonhttps://json.nlohmann.me/home/exceptions/#version-historyhttps://json.nlohmann.me/api/macros/json_diagnostics/#extended-diagnostic-messages#defineJSON_DIAGNOSTICS1输出详细信息......
  • Tool-CMake-添加自定义宏定义
    Tool-CMake-添加自定义宏定义cmake,makefile中定义的宏变量,其实和C/C++中的#define是一致的,可以传入到C/C++中。控制程序的编译比如:cmake中有宏定义:add_definitions(-Dhello="hellocmake")......