Linux网络协议之SSH
目录
一.SSH
1.1定义
1.2ssh的优点
1.3ssh服务端和客户端
1.4sshd
二.SSH服务原理
2.1公钥传输原理
2.2ssh加密通讯原理
2.2.1对称加密
2.2.2非对称加密
三.SSH登录方式
四.SSH免密码登录
一.SSH
1.1定义
SSH(Secure Shell) 是一种加密的网络协议,用于在不安全的网络(如互联网)中安全地远程登录和管理计算机系统,或传输文件。它通过加密技术保护通信内容,防止窃听、篡改和中间人攻击。
1.2ssh的优点
1.加密通信
所有传输的数据(包括密码、命令、文件)均被加密,确保隐私和完整性
2.身份验证
-
密码认证:通过用户名和密码登录。
-
密钥认证:使用公钥-私钥对(更安全,推荐用于服务器管理)。
3.远程终端访问
4.端口转发
SSH支持 端口转发功能,可以安全地传输其他协议和应用程序。
1.3ssh服务端和客户端
ssh客户端:用于连接远程 SSH 服务器,执行命令或传输文件。
常见有:Putty、Xshell、CRT
ssh服务端:用于提供 SSH 连接服务,接受客户端远程登录。
常见有:OpenSSH
OpenSSH 是实现 SSH 协议的开源软件项目,Centos7系统默认安装,并将ssh服务添加为开机自启。
sshconfig和sshd__config都是ssh服务器的配置文件,前者是针对客户端的配置文件而后者是针对服务端的配置文件
1.4sshd
sshd(Secure Shell Daemon)是 SSH 协议的服务端程序,负责监听客户端的连接请求,并提供安全的远程登录、命令执行和文件传输服务。它是 OpenSSH 的核心组件,默认运行在服务器的 22/TCP 端口。
服务名称:sshd##主程序##
服务端主程序:/usr/sbin/sshd ##配置文件##
服务端配置文件:/etc/ssh/sshd_config
#设置与服务端相关的应用可通过服务器端配置文件实现
客户端配置文件:/etc/ssh/ssh_config
#设置与客户端相关的应用可通过客户端配置文件实现
二.SSH服务原理
2.1公钥传输原理
-
客户端发起链接请求
-
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
-
客户端生成密钥对
-
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
-
客户端发送加密值到服务端,服务端用私钥解密,得到Res
-
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
-
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
2.2ssh加密通讯原理
ssh加密分为对称加密和非对称加密
2.2.1对称加密
定义:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密, 由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。
特点:1、加密方和解密方使用同一个密钥; 2、加密解密的速度比较快,适合数据比较长时的使用; 3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
优缺点:优点是算法公开、计算量小、加密速度快、加密效率高。
缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
2.2.2非对称加密
定义:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
优缺点 :优点是非对称加密技术安全性更好。
缺点是加密速度更慢。
三.SSH登录方式
方法一:
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port#用户为root时可不写主机名
#不加-p 选项 默认使用22端口
-p 指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
方法二
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port-l :-l 选项,指定登录名称。
-p: -p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
方式三.跳板登录
跳板登录:是在不暴露目标主机的情况下,通过一台中间服务器(跳板机/Bastion Host)间接访问目标服务器#方式一#
ssh -t IP1 ssh -t IP2.... ssh -t 目标IP
# IP1和IP2为跳板机的IP地址,先跳转到IP1,再跳转到IP2
#两次跳转成功后,才能远程连接到目标设备#举例#
ssh -t 192.168.91.101 ssh -t 192.168.91.102 ssh -t 192.168.91.103
#跳转两次,从当前设备远程连接IP地址为192.168.91.103的主机或者服务器#方式二
ssh -J IP1,IP2... 目标IP
#通过多个跳板机(Bastion Hosts)级联登录最终目标服务器#举例
ssh -J 192.168.52.102,192.168.52.103 192.168.52.104
#192.168.52.102和192.168.52.103为跳板机登录192.168.52.104
方法四.远程登录
ssh 目标设备的IP地址 命令
#远程控制目标主机使用命令 并将命令执行结果返回本机#主机B的IP地址为192.168.52.100[root@localhost ~] ssh 192.168.52.100 ls #查看主机B家目录下有哪些目录或文件
四.SSH免密码登录
客户端IP:192.168.52.100
服务端IP:192.168.52.101
ssh-keygen #生成密钥文件 -t #指定加密方式
#不加此选项,默认使用rsa方式
...
Enter file in which to save the key(/root/.ssh/id_rsa): 直接回车
#选择密钥文件存放的位置 (默认路径)Enter passphrase (empty for no passphrase):
#是否对密钥文件进行加密
#远程登录一般不输入密码 直接回车
Enter same passphrase again: cd /root/.sshls #最后会生成两个文件,其中.pub为密钥文件
ssh-copy-id -i 公钥文件 [用户名]@IP地址
#将密钥文件传过去
#以root用户登录时 可省略ssh-copy-id -i id_rsa.pub 192.168.52.101
#复制公钥文件
(以上操作皆在客户端完成)