Linux网络服务之SSH

一、SSH概述

1.1 定义

SSH(Secure Shell)协议是一种用于远程登录和安全传输文件的网络协议。
使用SSH协议,用户可以远程登录到远程主机并执行命令,或者通过安全的文件传输协议在本地计算机和远程主机之间传输文件。

SSH客户端<--------------网络---------------->SSH服务端

1.2 SSH的优点

  1. 安全性: 数据传输是加密的,可以防止信息泄漏

  2. 身份验证:防止未经授权的用户访问远程系统。

  3. 远程管理:可通过SSH协议登录远程服务器并执行命令,无需直接物理访问设备。

  4. 端口转发:SSH支持 端口转发功能,可以安全地传输其他协议和应用程序。

  5. 传输速度: 数据传输是压缩的,可以提高传输速度

SSH具有强大的安全性、身份验证和远程管理功能,使得它成为远程访问和管理计算机系统的首选协议

1.3 ssh服务端和客户端

1.3.1 简介

ssh 服务器 openssh
客户端 xshell crt putty moba
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

1.3.2 SSH守护进程-----sshd

#重要内容#
##名称##
服务名称:sshd

##主程序##
服务端主程序:/usr/sbin/sshd  

##配置文件##
服务端配置文件:/etc/ssh/sshd_config 
#设置与服务端相关的应用可通过服务器端配置文件实现
客户端配置文件:/etc/ssh/ssh_config
#设置与客户端相关的应用可通过客户端配置文件实现
ssh 服务默认使用的是TCP22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
ftp  服务默认使用的是TCP20 21
#sshd在使用ECDSA算法时生成的公钥文件
ssh_host_ecdsa_key.pub

#ecdsa  代表加密算法    
#pub    代表公钥

二、SSH原理

在这里插入图片描述

   +-------------------+                    +-------------------+
   |      客户端       |                    |      服务端       |
   +-------------------+                    +-------------------+
               |                                        |
               |             生成密钥对                 |
               |-------------------------------------->|
               |             交换公钥                   |
               |<--------------------------------------|
               |                                        |
               |             加密数据                   |
               |-------------------------------------->|
               |                                        |
               |                                        |
               |             解密数据                   |
               |<--------------------------------------|
               |                                        |
  1. 客户端向服务端发起连接请求;
  2. 服务端收到请求后,将会话id和服务端的公钥交给客户端;
  3. 客户端接收后,将会话id和客户端的公钥进行异或运算得到回复信息Res(Res=会话id^客户端公钥);
  4. 客户端再将Res用服务端的公钥加密,得到密文U(U=Res+服务端的公钥id),并将密文U交给服务端;
  5. 服务端用服务端私钥将密文U解密,得到回复信息Res;
  6. 服务端将Res和会话id进行异或运算,得到客户端的公钥
  7. 双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

三、SSH登录方式

3.1 方式一

ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port

#用户为root时可不写主机名
#不加-p 选项 默认使用22端口
-p  指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)                                      
ssh 192.168.2.102

在这里插入图片描述

3.2 方式二

ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l 选项,指定登录名称

3.3 方式三:跳板连接

3.3.1 跳板连接概述

跳板连接用于在不直接暴露目标主机的情况下进行安全访问
通过跳板连接,用户可以首先连接到中间设备,然后再通过中间设备连接到目标主机。
中间设备不一定是跳板机,只需要安装ssh服务就可以

应用场景

  1. 远程服务器管理:跳板连接常用于管理和控制远程服务器。通过跳板机,可以安全地登录和执行命令,而无需直接暴露目标服务器的访问端口。

  2. 内部网络隔离:跳板连接可用于将外部网络和内部网络隔离,提供一个安全的访问通道,外部用户必须通过身份验证和授权才能访问内部网络资源。

  3. 多层级安全访问:通过跳板机,可以从一个层级跳转到另一个层级,确保访问的安全性和可管理性。

  4. SSH端口转发:跳板连接还可以用于SSH端口转发,提供访问内部受限资源的能力。

3.3.2 具体配置

#本机地址为192.168.2.74
iptables -A INPUT -s 192.168.2.100 -j REJECT #拒绝来自此IP的所有访问

在这里插入图片描述

#方式一#
ssh -t IP1  ssh -t IP2.... ssh -t 目标IP
# IP1和IP2为跳板机的IP地址,先跳转到IP1,再跳转到IP2
#两次跳转成功后,才能远程连接到目标设备

#举例#
ssh -t 192.168.2.102 ssh -t 192.168.2.103 ssh -t 192.168.2.74 
#跳转两次,从当前设备远程连接IP地址为192.168.2.74的主机或者服务器

在这里插入图片描述

#方式二
ssh -J IP1,IP2...  目标IP
#IP1 IP2为中间设备的IP地址

#举例
ssh -J 192.168.2.102,192.168.2.103 192.168.2.74

在这里插入图片描述

3.4 方式四:远程控制

ssh 目标设备的IP地址 命令
#远程控制目标主机使用命令 并将命令执行结果返回本机


#主机B的IP地址为192.168.2.102 
[root@A ~] ssh 192.168.2.102 ls #查看主机B家目录下有哪些目录或文件 

在这里插入图片描述

四、服务端配置

通过修改服务端配置文件/etc/ssh/sshd_config 来实现不同的功能。

vim  /etc/ssh/sshd_config #编辑配置文件

4.1 系统安全架构-----修改ssh默认端口号

vim  /etc/ssh/sshd_config #编辑配置文件
...
Port 233 #修改端口号
...
#当前设备和目标设备的端口号都要修改

systemctl restart sshd #重启服务使生效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#修改后 远程连接需要加 -p选项
ssh 192.168.2.102 -p 9527

在这里插入图片描述

五、免密码登录

原理

使用公钥加密技术
在SSH免密登录过程中,客户端和服务器之间通过密钥对进行身份验证,而不是使用传统的密码验证方式。
SSH会自动使用密钥对进行验证,而无需输入密码。

思路

主机A为客户端 IP地址为192.168.2.100
主机B为服务端 IP地址为191.168.2.102

在这里插入图片描述
使主机A通过ssh远程连接主机B不需要密码

1)在客户端生成密钥文件

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/.ssh
ls 

.pub为密钥文件

在这里插入图片描述

2)将公钥复制到SSH服务器上

ssh-copy-id -i 公钥文件  [用户名]@IP地址 
#将密钥文件传过去
#下次就可以免密登录
#以root用户登录时 可省略
ssh-copy-id -i id_rsa.pub 192.168.2.102
#复制公钥文件

在这里插入图片描述

3)通过SSH连接尝试登录到服务器

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白幽幽白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值