SSH(Secure Shell,安全外壳)是一个需要进行加密和认证的,用于远程访问及文件传输的网络安全协议。
SSH基于服务器/客户端结构,设备同时支持SSH服务器和客户端功能。作为服务器,设备允许接受多个SSH客户端的连接;作为客户端,设备允许用户与支持SSH服务器功能的设备建立SSH连接。
SSH功能类似于Telnet服务,但SSH基于加密和认证的特性可以为用户提供更强大的安全保障机制,在用户使用不安全的网络环境登录设备时,SSH能够有效保护设备不受IP地址欺诈、明文密码截取等攻击。
目前存在SSHv1和SSHv2两个版本,二者互不兼容。相比SSHv1,SSHv2提供更高的性能和安全性。
系统支持上述两个版本,且同时支持IPv4和IPv6。本篇中如无特殊说明,文中的SSH均指SSHv2。
SSH客户端和SSH服务器交互流程可以分为以下七个阶段:建立连接、版本号协商、密钥交换与算法协商、用户认证、会话请求、会话交互和会话关闭。
建立连接阶段
服务器端监听TCP 22号端口,等待客户端的连接。
客户端向服务器的22号端口发起TCP连接请求,与服务器端建立起TCP连接。
版本号协商阶段
服务器端向客户端发送版本协商报文。
客户端接收并处理该报文后,回复服务端决定采用的协议版本号。
服务器端处理客户端回复的信息,确认协商版本成功与否。
密钥交换与算法协商阶段
若版本号协商成功,进入密钥交换与算法协商。
服务器端与客户端互相向对端发送算法协商报文,根据本端支持的算法来确定最终使用的算法。
服务器端与客户端利用密钥交换算法、主机密钥等相关信息,生成会话密钥与会话ID,利用它们进行后续的用户认证以及数据传输的加解密。
用户认证阶段
加密通道建立起来之后,进入用户认证阶段。
客户端向服务器端发送认证请求。
服务器端对客户端进行认证,直到认证成功或认证次数达到上限,服务器端关闭连接为止。
会话请求阶段
认证成功后,客户端向服务器端发送会话请求。
服务器等待并处理客户端的会话请求,请求被处理成功之后,SSH进入会话交互阶段。
会话交互阶段
会话请求成功后,进入会话交互阶段,允许加密数据双向传送与处理。
客户端将需要执行的命令发送给服务器。
服务器接收到命令后进行解密、解析并处理。
服务器将处理结果加密后发给客户端。
客户端收到服务器消息后进行解密与处理。
会话关闭阶段
服务器和客户端断开连接并关闭会话。
SSH支持使用password认证、public-key认证等机制对客户端进行认证。
password认证
password认证通过校验用户名和密码的方式对客户端进行认证。
客户端使用用户名和密码向服务器发出password认证请求,将加密的用户名和密码发送给服务器。
服务器收到请求信息并解密,通过AAA服务对客户端身份进行认证(包含本地认证和远程认证),并向客户端返回用户认证成功或失败的消息。
public-key认证
public-key认证是通过RSA、DSA等数字签名算法对客户端进行认证。
客户端向服务器发送public-key认证请求,包括用户名、公钥、公钥算法等信息。
服务器收到该信息并检查公钥的合法性。
如果不合法,则直接回复认证失败;如果合法,服务器对客户端进行数字签名认证,并返回用户认证成功或失败的消息。
说明
public-key认证仅适用版本为SSHv2的客户端。
公钥算法是一种不对称加密算法,用于为SSH客户端与服务端之间的通信进行加密,保障数据传输安全。
设备支持RSA(Revist-Shamir-Adleman Algorithm)、DSA(Digital-Signature Algorithm)和ECC(Elliptic Curves Cryptography)三种公钥算法。
RSA/DSA算法
基于大数的因子分解算法,可用于交换密钥和签名,但是加解密效率较低,不适合对大量数据进行加解密。
DSA算法
相比RSA,DSA算法只能用于签名,无法用于加解密和密钥交换,但是其效率较RSA高许多。
ECC算法
基于离散对数算法,破解难度高,在相同安全性下,比RSA 和DSA处理效率更高,存储和带宽要求更低。
RFC 4251:The Secure Shell (SSH) Protocol Architecture
RFC 4252:The Secure Shell (SSH) Authentication Protocol
RFC 4253:The Secure Shell (SSH) Transport Layer Protocol
RFC 4254:The Secure Shell (SSH) Connection Protocol
RFC 4419:Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
RFC 4716:The Secure Shell (SSH) Public Key File Format
RFC 4819:Secure Shell Public Key Subsystem
RFC 3526:More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)
RFC 2409:The Internet Key Exchange (IKE)
RFC 1950:ZLIB Compressed Data Format Specification version 3.3
配置SSH服务器
开启SSH服务器功能
(可选)配置SSH服务器版本
(可选)配置监听端口号
(可选)配置服务器密钥与密钥交换算法
(可选)配置加密算法
(可选)配置认证参数
(可选)配置ACL规则
(可选)配置IP静默功能
(可选)断开连接的SSH客户端
配置SCP服务器
配置SSH客户端
与SSH服务器建立连接
(可选)恢复建立的SSH连接
(可选)断开挂起的SSH客户端连接
配置SCP客户端
配置SSH服务器功能后,允许SSH客户端远程登录设备。
SSH服务器配置任务如下:
开启SSH服务器功能
(可选)配置SSH服务器版本
(可选)配置监听端口号
(可选)配置服务器密钥与密钥交换算法
(可选)配置加密算法
(可选)配置认证参数
(可选)配置ACL规则
(可选)配置IP静默功能
(可选)断开连接的SSH客户端
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启SSH服务器功能。
enable service ssh-server
缺省情况下,SSH服务器功能处于关闭状态。
(可选)开启SSHv1功能。
ip ssh compatible-ssh1x enable
缺省情况下,SSHv1功能处于关闭状态。
如果需要使用SSHv1版本,需要先开启SSHv1功能。
SSH服务器支持SSHv1和SSHv2两个版本,SSHv2较SSHv1拥有较高的性能和安全性。实际配置时,可根据客户端版本以及安全要求选择合适的SSH服务器版本。
缺省情况下,SSH服务器兼容SSHv1和SSHv2版本,即两个版本的客户端都允许连接。配置SSH服务器版本后,只允许对应版本的客户端连接。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置SSH服务器的版本。
ip ssh version version-type
缺省情况下,SSH服务器兼容SSH版本1和2。
SSH服务器默认使用22号端口来监听客户端的连接,该端口号支持通过配置来修改。
22号端口是协议定义的标准端口,容易遭到非法用户的攻击。若攻击者短时间大量访问该端口,会引起设备带宽浪费、性能下降等问题,导致其他正常用户无法访问(即拒绝服务攻击),修改监听端口号可有效防止上述问题。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置SSH服务器的监听端口号。
ip ssh port ssh-monitor-port
缺省情况下,SSH服务器的监听端口号为22。
配置服务器密钥与密钥交换算法用于完成客户端与服务器建立通信连接。
SSHv1支持RSA密钥;SSHv2支持RSA和DSA密钥。如果已生成RSA密钥,则SSH1与SSH2都可用;如果仅生成DSA密钥,则仅有SSH2可用。
进入特权模式。
enable
进入全局配置模式。
configure terminal
生成SSH服务器端的公共密钥。
crypto key generate { dsa | ecc | rsa }
缺省情况下,SSH服务器端未生成公共密钥。
若SSH服务器未生成密钥,则该项必须配置。删除SSH服务器的公共密钥需要使用命令crypto key zeroize { dsa | ecc | rsa },不能使用上述命令的no形式命令。
配置SSH服务器支持的DH密钥交换算法。
ip ssh key-exchange { dh_group_exchange_sha1 | dh_group14_sha1 | dh_group1_sha1 | ecdh_sha2_nistp256 | ecdh_sha2_nistp384 | ecdh_sha2_nistp521 }
缺省情况下,SSH服务器的DH密钥交换算法支持情况为:SSHv1不支持DH密钥交换算法;SSHv2支持diffie-hellman-group-exchange-sha1、diffie-hellman-group14-sha1、ecdh_sha2_nistp256、ecdh_sha2_nistp384和ecdh_sha2_nistp521。
(可选)配置SSH服务器的密钥交换算法协商最小长度。
ip ssh dh-exchange min-len { 1024 | 2048 }
缺省情况下,SSH服务器的密钥交换算法协商最小长度为2048字节。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置SSH服务器支持的加密模式。
ip ssh cipher-mode { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-cbc | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | blowfish-cbc | cbc | ctr | des-cbc | gcm | others } *
缺省情况下,SSH服务器支持的加密模式为ctr和gcm。
cbc和others加密算法已被证明可在有限时间内进行破解。因此在安全性要求较高的组织或单位,可选择加密模式为ctr和gcm模式,以提高SSH服务器的安全级别。
配置SSH服务器支持的消息认证算法。
ip ssh hmac-algorithm { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 }
缺省情况下,SSHv1不支持消息认证算法,SSHv2支持MD5、SHA1、SHA1-96、MD5-96、sha2-256和sha2-512六种消息认证算法。
配置用户认证相关的参数,支持配置认证超时时间、认证次数、公钥认证等内容。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置SSH服务器的用户认证超时时间。
ip ssh time-out timeout-time
缺省情况下,SSH服务器的用户认证超时时间为120秒。
当超过用户认证超时时间后仍没有认证成功,则认为用户认证失败。
配置SSH服务器的认证重试次数。
ip ssh authentication-retries retry-times
缺省情况下,SSH服务器用户认证的重认证次数为3次。
若用户通过账号密码认证的尝试次数超过配置的认证重试次数,则认为用户认证失败。
配置关联客户端的公钥文件和用户名。
ip ssh peer username public-key { dsa | ecc | rsa } filename-path
若客户端需要使用public-key认证方式时,需要在设备上关联客户端的公钥和用户名。仅SSHv2支持publick-key认证。
配置ACL规则可用于过滤符合特定规则的用户,避免非法用户通过SSH接入设备,引起安全风险。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置SSH服务器的ACL过滤规则。
(IPv4地址)
ip ssh access-class { acl-name | acl-number }
缺省情况下,不存在SSH服务器的ACL过滤规则。
(IPv6地址)
ipv6 ssh access-class acl-name
缺省情况下,未配置SSH服务器的IPv6 ACL过滤规则。
配置IP静默功能后,当SSH客户端认证失败达到IP静默条件时,则触发源IP静默,即不允许该IP地址的SSH客户端认证登录,以防止恶意用户攻击设备。当超过静默唤醒周期后,该IP地址的SSH客户端允许重新进行SSH认证登录设备。该功能默认开启,支持手动关闭。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启SSH服务器的IP静默功能。
ip ssh ip-block disable
缺省情况下,SSH服务器的IP静默功能处于开启状态。
可通过该命令的no形式关闭IP静默功能。
(可选)配置SSH服务器的IP静默认证失败次数和统计认证失败次数的时间周期。
ip ssh ip-block failed-times failed-times period period-time
缺省情况下,SSH服务器的IP静默认证失败次数为6,统计认证失败次数的周期时间为5分钟。
(可选)配置SSH服务器的IP静默唤醒的时间周期。
ip ssh ip-block reactive reactive-interval
缺省情况下,SSH服务器的IP静默唤醒的周期时间为5分钟。
在静默IP达到唤醒的时间周期后,该IP地址的SSH客户端允许重新进行SSH登录。
(可选)清除IP静默和认证失败的用户信息。
clear ssh ip-block { all | ipv4-address | ipv6-address }
清除相关用户信息后,对应的客户端可重新进行SSH登录。
进入特权模式。
enable
断开已经建立的SSH连接会话。
disconnect ssh { vty session-id | session-id }
作为SSH服务器,设备上可能连接有多个SSH客户端,可以使用该命令强行断开连接到设备的客户端。有以下两种方式可以断开客户端:
通过输入指定的SSH连接会话号(通过命令show ssh查看客户端的SSH连接会话号)。
通过输入指定的VTY连接会话号(通过命令show users查看客户端的VTY连接会话号,该操作只能断开SSH类型的连接)。
SCP是一个支持网络文件传输的协议。SCP基于RCP协议实现,RCP负责文件传输功能,SSH负责为RCP提供认证和加密功能。
在设备上配置SCP服务器功能后,允许用户通过SCP命令向设备上传和下载文件,过程中所有交互数据以加密形式传输,具有较高的安全性。
配置SCP服务前,需要先配置SSH服务器功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启SCP服务器功能。
ip scp server enable
缺省情况下,SCP服务器功能处于关闭状态。
(可选)配置SCP服务器的文件上传和下载路径。
ip scp server topdir { flash:/path | flash2:/path | sd0:/path | sata0:/path | tmp:/path | usb0:/path | usb1:/path }
缺省情况下,SCP服务器的文件上传和下载路径为“flash:/”。
配置SSH客户端是指将本机设备配置为客户端,允许本机向其他提供SSH服务器服务的设备建立起SSH安全连接,用于远程登录其他设备进行管理操作。
SSH客户端配置任务如下:
与SSH服务器建立连接
(可选)恢复建立的SSH连接
(可选)断开挂起的SSH客户端连接
进入特权模式。
enable
作为SSH客户端与SSH服务器建立一个远程加密会话。
ssh [ -v { 1 | 2 } | -c { 3des | aes128-cbc | aes192-cbc | aes256-cbc | aes128-ctr | aes192-ctr | aes256-ctr | aes128-gcm | aes256-gcm } | -l username | -m { hmac-md5-96 | hmac-md5-128 | hmac-sha1-96 | hmac-sha1-160 | hmac-sha2-256 | hmac-sha2-512 } | -p port-num ] * { ipv4-address | hostname } [ /source { ip ipv4-address | ipv6 ipv6-address | interface interface-type interface-number } ] [ /vrf vrf-name ]
SSHv1只支持DES(56位密钥)和3DES(168位密钥)加密算法,SSHv2支持以下AES高级加密算法:ase128-cbc、aes192-cbc、aes256-cbc、ase128-ctr、aes192-ctr和aes256-ctr。若用户在选择SSH版本号的同时,指定了不匹配的加密算法或认证算法,在建立连接时,将会忽略掉不匹配的算法。
进入全局配置模式。
configure terminal
(可选)配置SSH客户端的源接口。
ip ssh source-interface interface-type interface-number
缺省情况下,未配置SSH客户端的源接口。
配置源接口后,SSH客户端通信时会使用该接口上的IP地址作为全局源地址。若未配置源接口,SSH协议报文的源地址将根据目的地址查询对应的路由得到。如果未对SSH连接单独指定源接口或源地址,将同步使用该全局配置。
在设备作为客户端与SSH服务器建立起SSH会话连接后,可以使用按键(CTRL+SHIFT+6 X)短暂退出该连接。在退出该连接后,可以通过命令重新恢复连接。
设备作为SSH客户端所建立起的SSH连接信息可以通过命令show ssh-session查看。
进入特权模式。
enable
恢复已建立的SSH Client会话连接。
ssh-session session-id
设备端作为SSH客户端连到SSH服务器时,允许通过命令强行断开指定会话号的SSH连接。
进入特权模式。
enable
断开挂起的SSH客户端连接。
disconnect ssh-session session-id
可通过命令show ssh-session查看设备的session-id。
配置SCP客户端是指允许将本机设备作为SCP客户端,通过SCP命令向支持SCP服务器的设备上传和下载文件,过程中所有交互数据以加密形式传输,具有较高的安全性。
进入特权模式。
enable
进入全局配置模式。
configure terminal
(可选)配置SCP客户端的源接口。
ip scp client source-interface interface-type interface-number
缺省情况下,未配置SCP客户端的源接口。
配置源接口后,SCP客户端通信时会使用该接口上的IP地址作为全局源地址。若未配置源接口,SCP协议报文的源地址将根据目的地址查询对应的路由得到。如果未对SCP连接单独指定源接口或源地址,将同步使用该全局配置。
作为SCP客户端向远程SCP服务器上传或下载文件。
scp [ -v { 1 | 2 } | -c { 3des | aes128-cbc | aes192-cbc | aes256-cbc | aes128-ctr | aes192-ctr | aes256-ctr | aes128-gcm | aes256-gcm } | -m { hmac-md5-96 | hmac-md5-128 | hmac-sha1-96 | hmac-sha1-160 | hmac-sha2-256 | hmac-sha2-512 } | -p port-num ] * source-file destination-file [ /source { ip ipv4-address | ipv6 ipv6-address | interface interface-type interface-number } ] [ /vrf vrf-name ]
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
可以通过执行debug命令来查看调试信息。
注意
debug命令会输出调试信息,占用系统资源。使用完毕后,请立即关闭调试开关。
SSH监视与维护
作用 |
命令 |
---|---|
查看SSH服务器当前生效的配置信息 |
show ip ssh |
查看已经建立的SSH连接的连接信息 |
show ssh |
查看IP静默和认证失败的信息 |
show ssh ip-block { all | list } |
查看SSH服务器公共密钥的公开密钥部分的信息 |
show crypto key mypubkey { dsa | ecc | rsa } |
查看已建立的SSH客户端会话的连接信息 |
show ssh-session |
打开SSH基本连接信息的调试开关 |
debug ssh |
打开SSH客户端基本连接信息的调试开关 |
debug ssh client |
设备开启SSH服务器功能后,用户能够使用线路上配置的口令密码登录到设备。
SSH线路口令认证组网图
开启SSH服务器功能。
配置线路口令。
在线路上开启口令认证。
开启SSH服务器功能。
Device> enable
Device# configure terminal
Device(config)# enable service ssh-server
配置线路口令为password1。
Device(config)# line vty 0 4
Device(config-line)# password password1
在线路上开启口令认证。
Device(config-line)# login
使用客户端软件进行SSH登录,密码为password1,用户名可以为任意值,能够正常登录设备。以PuTTY软件举例,登录界面如下:
login as: anyname
anyname@192.168.1.1's password:
Last login: Apr 2 2021 10:00:00 from 192.168.1.2 through ssh.
Device#
通过show ip ssh命令查看SSH服务器已生效。
Device# show ip ssh
SSH Enable - version 2.0
SSH Port: 22
SSH Cipher Mode: ctr,gcm
SSH HMAC Algorithm: sha2-256,sha2-512
Authentication timeout: 120 secs
Authentication retries: 3
SSH SCP Server: disabled
SSH dh-exchange min-len: 2048
SSH ip-block: enabled
通过show ssh命令查看SSH连接信息,存在用户名为anyname(登录时使用的用户名)的连接。
Device# show ssh
Connection Version Encryption Hmac Compress State Username
1 2.0 aes256-ctr hmac-sha2-256 none Session started anyname
通过show users命令查看连接的终端信息。
Device# show users
Line User Host(s) Idle Location
---------------- ------------ -------------------- ---------- ------------------
0 con 0 --- idle 00:00:16 ---
* 1 vty 0 --- idle 00:00:00 192.168.1.2
!
enable service ssh-server
!
line console 0
line vty 0 4
login
password 7 $10$396$mnO2p3SVaxm7$
!
设备开启SSH服务器功能后,用户能够使用设备上创建的本地账户通过SSH登录到设备。
SSH本地用户认证组网图
开启SSH服务器功能。
添加本地账户。
在线路上开启本地用户认证。
开启SSH服务器功能。
Device> enable
Device# configure terminal
Device(config)# enable service ssh-server
添加本地用户,用户名为hostname1,密码为password1。
Device(config)# username hostname1 password password1
在线路上开启本地用户认证。
Device(config)# line vty 0 4
Device(config-line)# login local
使用客户端软件进行SSH登录,用户名为hostname1,密码为password1,能够正常登录设备。以PuTTY软件举例,登录界面如下:
login as: hostname1
hostname1@192.168.1.1's password:
Last login: Apr 2 2021 10:00:00 from 192.168.1.2 through ssh.
Device>
通过show ip ssh命令查看SSH服务器已生效。
Device# show ip ssh
SSH Enable - version 2.0
SSH Port: 22
SSH Cipher Mode: ctr,gcm
SSH HMAC Algorithm: sha2-256,sha2-512
Authentication timeout: 120 secs
Authentication retries: 3
SSH SCP Server: disabled
SSH dh-exchange min-len: 2048
SSH ip-block: enabled
通过show ssh命令查看SSH连接信息,存在用户名为hostname1的连接。
Device# show ssh
Connection Version Encryption Hmac Compress State Username
1 2.0 aes256-ctr hmac-sha2-256 none Session started hostname1
通过show users命令查看连接的终端信息,存在用户名为hostname1的用户。
Device# show users
Line User Host(s) Idle Location
---------------- ------------ -------------------- ---------- ------------------
0 con 0 --- idle 00:00:16 ---
* 1 vty 0 hostname1 idle 00:00:00 192.168.1.2
!
username hostname1 password 7 $10$2fe$Rd/C4ijEl+UN$
!
enable service ssh-server
!
line console 0
line vty 0 4
login local
!
SSH用户可以采用AAA认证方式进行用户认证。
SSH的AAA认证组网图
配置AAA server,在AAA server上添加AAA用户。
开启SSH服务器功能。
设备上开启AAA服务,并配置SSH的认证方法为AAA server。
在线路上开启AAA认证。
配置AAA server,在AAA server上添加AAA用户,用户名为hostname1,密码为password1。(配置略,关于AAA server的配置请参考AAA server的配置手册)
开启SSH服务器功能。
Device> enable
Device# configure terminal
Device(config)# enable service ssh-server
开启AAA服务。
Device(config)# aaa new-model
配置AAA server服务器地址和共享密钥(此处以RADIUS服务器为例,地址为192.168.1.3,共享密钥为radiuskey)。
Device(config)# radius-server host 192.168.1.3 key radiuskey
配置Login认证方法列表login-method,认证方法选择radius(此处配置备选方法local,在AAA server出现问题时保障有备选方案)。
Device(config)# aaa authentication login login-method group radius local
在线路上开启AAA认证。
Device(config)# line vty 0 4
Device(config-line)# login authentication login-method
使用客户端软件进行SSH登录,用户名为hostname1,密码为password1,能够正常登录设备。以PuTTY软件举例,登录界面如下:
login as: hostname1
hostname1@192.168.1.1's password:
Last login: Apr 2 2021 10:00:00 from 192.168.1.2 through ssh.
Device>
通过show ip ssh命令查看SSH服务器已生效。
Device# show ip ssh
SSH Enable - version 2.0
SSH Port: 22
SSH Cipher Mode: ctr,gcm
SSH HMAC Algorithm: sha2-256,sha2-512
Authentication timeout: 120 secs
Authentication retries: 3
SSH SCP Server: disabled
SSH dh-exchange min-len: 2048
SSH ip-block: enabled
通过show ssh命令查看SSH连接信息,存在用户名为hostname1的连接。
Device# show ssh
Connection Version Encryption Hmac Compress State Username
1 2.0 aes256-ctr hmac-sha2-256 none Session started hostname1
通过show users命令查看连接的终端信息,存在用户名为hostname1的用户。
Device# show users
Line User Host(s) Idle Location
---------------- ------------ -------------------- ---------- ------------------
0 con 0 --- idle 00:00:16 ---
* 1 vty 0 hostname1 idle 00:00:00 192.168.1.2
!
aaa new-model
aaa authentication login login-method group radius local
!
radius-server host 192.168.1.3 key 7 $10$3b4$ln0s66i8XfEi$
!
line vty 0 4
login authentication login-method
!
设备作为SSH服务器,允许用户通过Public-key认证方式登录,无需使用密码登录。
SSH公钥认证组网图
使用客户端软件生成一对密钥对(公钥和私钥)。
将公钥文件复制到设备的flash中,并与用户关联。
配置本地用户,并在线路上开启本地认证。(配置略,参见1.8.2 SSH本地用户认证配置举例)
使用客户端生成一对密钥对(此处以Ubuntu环境举例,生成私钥id_rsa,公钥id_rsa.pub)。
root@ubuntu:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6a/sWJjpx97QQEs9Aoiph5Ry452ybIyNyZUsT48Irrw root@ubuntu
The key's randomart image is:
+---[RSA 2048]----+
| .o .. |
|.o= . . . |
|o=.o.. + o |
|+.+=o o + . |
|+O*oo S |
|++*o . = o |
|o. +.+ . |
|.. . +o+ |
| E. o+=.o |
+----[SHA256]-----+
将公钥复制到设备的flash中(略)。
将公钥与用户hostname1关联。
Device> enable
Device# configure terminal
Device(config)# ip ssh peer hostname1 public-key rsa flash:test_key.pub
# 用户通过Public-key认证方式能够登录设备(此处以Ubuntu环境举例)。
root@ubuntu:~/.ssh# ls
id_rsa id_rsa.pub
root@ubuntu:~/.ssh# ssh -i id_rsa hostname1@192.168.1.1
Last login: Apr 2 2021 10:00:00 through console.
Device>
!
username hostname1 password 7 $10$2fe$Rd/C4ijEl+UN$
!
ip ssh peer hostname1 public-key rsa flash:id_rsa.pub
!
enable service ssh-server
!
line console 0
line vty 0 4
login local
!
设备作为文件服务器,允许用户通过SCP命令向设备上传与下载文件。
SCP服务器组网图
开启SSH服务器功能。
开启SCP服务器功能。
配置本地用户,并在线路上开启本地认证。(配置略,参见1.8.2 SSH本地用户认证配置举例)
开启SSH服务器功能。
Device> enable
Device# configure terminal
Device(config)# enable service ssh-server
开启SCP服务器功能。
Device(config)# ip scp server enable
# 客户端能够使用SCP命令向设备上传文件,此处以Ubuntu环境举例。
在Ubuntu的shell环境中使用SCP命令向设备上传文件file.txt。
root@ubuntu:~# scp file.txt hostname1@192.168.1.1:/
hostname1@192.168.1.1's password:
file.txt 100% 14 0.0KB/s 00:00
在设备上查看flash目录下存在文件file.txt。
Device> enable
Device# dir flash:file.txt
Number Properties Size Time Name
------ ---------- ---------- ------------------------ --------------------
1 -rwx 14B Fri Apr 2 10:00:00 2021 file.txt
# 客户端能够使用SCP命令从设备上下载文件,此处以Ubuntu环境举例。
设备flash目录下存在文件file.txt。
Device> enable
Device# dir flash:file.txt
Number Properties Size Time Name
------ ---------- ---------- ------------------------ --------------------
1 -rwx 14B Fri Apr 2 10:00:00 2021 file.txt
在Ubuntu的shell环境中使用SCP命令向设备下载文件file.txt,并重命名为file1.txt。
root@ubuntu:~# scp hostname1@192.168.1.1:/file.txt file1.txt
hostname1@192.168.1.1's password:
file.txt 100% 14 0.0KB/s 00:00
在Ubuntu的shell环境中查看,对应的file1.txt文件已下载成功。
root@ubuntu:~# ls -l file1.txt
-rwxr--r-- 1 root root 14 Apr 2 10:00 file1.txt
!
username hostname1 password 7 $10$2fe$Rd/C4ijEl+UN$
!
enable service ssh-server
!
ip scp server enable
!
line console 0
line vty 0 4
login local
!
设备作为SSH客户端,能够通过SSH协议登录到SSH服务器。
SSH客户端组网图
SSH server配置用户。
设备使用ssh命令登录SSH server。
SSH server上配置可用于登录的用户。(配置略,具体参见SSH server的用户手册)
在设备上使用ssh命令登录到SSH server。
Device> enable
Device# ssh -l admin 192.168.1.2
# 设备成功登录SSH server。
Device# ssh -l hostname1 192.168.1.2
%Trying 192.168.1.2, 22,...open
hostname1@192.168.1.2's password:
Last login: Apr 2 2021 10:00:00 from 192.168.1.1 through ssh.
设备作为SCP客户端,能够使用scp命令向SCP server上传和下载文件。
SCP客户端组网图
SCP server上配置用户。
设备使用scp命令上传和下载文件。
SCP server上配置可用的用户。(配置略,具体参见SCP server的用户手册)
在设备上使用scp命令拷贝SCP server上的文件file.txt到设备flash上。
Device> enable
Device# scp hostname1@192.168.1.2:/file.txt flash:/file.txt
在设备上使用scp命令拷贝本地文件file.txt到SCP server上。
Device> enable
Device# scp hostname1@192.168.1.2:/file.txt flash:/file.txt
成功拷贝SCP server上的文件到本地。
Device# scp flash:/file.txt hostname1@192.168.1.2:/file.txt
%Trying 192.168.1.2, 22,...open
hostname1@192.168.1.2's password:
Press Ctrl+C to quit
!
Transmission success.
成功拷贝本地文件到SCP server上。
Device# scp hostname1@192.168.1.2:/file.txt flash:/file.txt
%Trying 192.168.1.2,...open
hostname1@192.168.1.2's password:
Press Ctrl+C to quit
!
Transmission success.