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
输入账户密码后成功登录。