网络基础-SSH协议(思科、华为、华三)

SSH(Secure Shell)是一种用于安全远程访问和安全文件传输的协议。它提供了加密的通信通道,使得用户可以在不安全的网络上安全地远程登录到远程主机,并在远程主机上执行命令、访问文件以及传输文件,本篇主要讲解命令执行功能。SSH协议使用TCP端口号22作为默认端口号;在网络上建立起连接后,用户可以通过 SSH客户端与远程主机进行交互。

SSH(Secure Shell)和Telnet是两种用于远程登录的协议,它们之间有几个重要的区别:
复制代码
1.SSH提供了加密的通信通道,可以有效地防止数据在传输过程中被窃听或篡改,因此提供了更高的安全性。相比之下,Telnet在传输过程中不对数据进行加密,因此容易受到中间人攻击和窃听,安全性较低。
​
2.SSH提供了多种强大的身份认证机制,包括密码认证、公钥认证、基于证书的认证等。这些认证机制提供了更高的安全性,并且可以减少密码被盗的风险。Telnet通常仅支持基于密码的认证,安全性较低,容易受到密码破解或中间人攻击的影响。
​
3.SSH默认使用TCP端口号22作为通信端口,Telnet默认使用TCP端口号23。

Telnet相关配置

需求:实现R2能够telnet管理R1

这个时候R2为客户端,R1为被管理设备即服务端

思科:
R1服务端配置:

1.检查设备是否支持SSH协议

cpp 复制代码
R1#show ip ssh

有对应回显则表示设备支持SSH协议;接着设置enable密码,与telnet一样,如果没有设置enable密码的,客户端登陆到该设备就只能在用户模式中进行操作。

cpp 复制代码
R1>enable  
R1#configure terminal 
R1(config)#enable secret wolven  //enable密码设置为wolven 

接着,设置域名以及相关的数据加密算法,设置密钥长度;域名的设置与密钥生成相关,且在设置密钥长度是要注意,当密钥长度小于768bit时无法使用SSH版本2;(密钥越长,则通信的效率会低)

配置命令:
cpp 复制代码
R1(config)#ip domain-name wolven.com  //设置域名
R1(config)#crypto key generate rsa  //生成rsa密钥
How many bits in the modulus [512]: 2048   //选择密钥长度
% Generating 2048 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 1 seconds)

接着需要创建登录账户(用户名+密码),并在配置vty线路启用 vty 线路上的 SSH 协议。

cpp 复制代码
R1(config)#username wolven secret wolven123  //创建wolven账户,密码为wolven123
R1(config)#line vty 0 4 
R1(config-line)#transport input ssh 
R1(config-line)#login local 

至此服务端配置完成。

客户端尝试登录
cpp 复制代码
R2>ssh -l wolven 192.168.8.10
Password: 
R1>

使用ssh命令,跟上-l参数指定登录账户,输入密码后正常登录。

补充:
cpp 复制代码
R1(config)#ip ssh time-out 120     //修改超时时间
R1(config)#ip ssh authentication-retries 1     //修改重认证次数。
R1(config)#ip ssh version 2          //修改版本
华为:
R1服务端设置:

首先打开SSH服务,并生成rsa密钥;

cpp 复制代码
<R1>system-view 
[R1]stelnet server enable 
[R1]rsa local-key-pair create //创建密钥
The key name will be: Host
% RSA keys defined for Host already exist.
Confirm to replace them? (y/n)[n]:y     //是否重新生成密钥并覆盖原来的密钥
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
       It will take a few minutes.
Input the bits in the modulus[default = 512]:512  //选择密钥长度
Generating keys...
..............++++++++++++
.++++++++++++
......................................++++++++
.....++++++++

接着创建本地账户用于客户端进行ssh登录:

cpp 复制代码
[R1]aaa   //进入3a视图
[R1-aaa]local-user wolven password cipher wolven123
Info: Add a new user.
[R1-aaa]local-user wolven service-type ssh 
[R1-aaa]local-user wolven privilege level 15  //设置账户权限 
​
[R1-aaa]quit 
[R1]ssh user wolven authentication-type password   //设置wolven用户在使用ssh登录时使用密码进行身份验证

最后设置vty界面,开启ssh登录,并设置验证方式为aaa。

cpp 复制代码
[R1]user-interface vty 0 4 
[R1-ui-vty0-4]protocol inbound ssh 
[R1-ui-vty0-4]authentication-mode aaa

至此服务端配置完成。

R2客户端尝试连接:
cpp 复制代码
[R2]ssh client first-time enable 

注:第一次登录时,客户端需要开启首次认证功能,本次将不会验证SSH服务器端的RSA公钥;登录后系统将自动分配并保存RSA公钥,在下次登录时验证。

使用stelnet进行连接:

cpp 复制代码
[R2]stelnet 192.168.8.10

华三:

R1服务端配置:

首先开启SSH服务,并生成rsa密钥;

cpp 复制代码
<R1>system-view 
[R1]ssh server enable 
[R1]public-key local create rsa 

接着创建本地账户用于客户端使用ssh进行登录;并配置该用户进行SSH登录时使用密码进行身份验证。

cpp 复制代码
[R1]local-user wolven
[R1-luser-manage-wolven]password simple Hello123456
[R1-luser-manage-wolven]service-type ssh
[R1-luser-manage-wolven]quit 
[R1]ssh user wolven service-type all authentication-type password  //使用密码进行身份验证

最后进入vty视图,配置使用SSH登录,且登录时使用aaa认证进行身份验证:

cpp 复制代码
[R1]user-interface vty 0 4
[R1-line-vty0-4]authentication-mode scheme  //3a认证
[R1-line-vty0-4]protocol inbound ssh

至此服务端配置完成。

R2客户端进行连接尝试
cpp 复制代码
<R2>ssh2 192.168.8.10

输入账户密码后成功登录。

相关推荐
小蜗牛慢慢爬行12 分钟前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
秋名山小桃子15 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213815 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
MARIN_shen17 分钟前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
努力学习的小廉22 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei26 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
Arenaschi1 小时前
在Tomcat中部署应用时,如何通过域名访问而不加端口号
运维·服务器
小张认为的测试1 小时前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
waicsdn_haha1 小时前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
m0_748240021 小时前
Chromium 中chrome.webRequest扩展接口定义c++
网络·c++·chrome