目录

简介

解决方法

背景信息

配置SSH和SCP

故障排除

简介

本文档介绍如何使用 — O选项确保从OpenSSH9.0上的客户端成功通过SCP连接到Cisco IOS® XE设备。

解决方法

-O选项可在较新版本的OpenSSH上使用，并使用SCP命令强制使用SCP进行文件传输，而不是SFTP。

scp -O file.ext username@192.0.2.1:file.ext

背景信息

SCP可用于在SCP客户端和SCP服务器之间传输文件。SCP使用SSH会话进行身份验证。  用户通过身份验证后，将打开另一个通道，以通过SCP传输文件。  在OpenSSH9.0及更高版本中，SSH仍用于身份验证，但使用SFTP而不是SCP进行文件传输。  这会导致当前版本的Cisco IOS XE出现问题，因为当前不支持SFTP通过SSH传输文件。SSH会话成功，系统日志缓冲区中存在登录成功日志。  但是，当SCP客户端尝试开始SFTP传输时，连接会突然关闭。

配置SSH和SCP

使用SCP客户端将文件传输到Cisco IOS XE设备的必备条件。

- 必须配置SSH

- 必须配置本地登录或AAA

- 用户需要权限级别15才能使用SCP

- 必须启用SCP服务器

以下是配置示例

# configure SSH

hostname c8000v

ip domain name cisco.com

crypto key generate rsa

# optional - use ssh version 2

ip ssh version 2

# verify the SSH server is online

show ip ssh

# create a user with privilege level 15

username cisco privilege 15 password 0 cisco

# configure the vty line to use local login and allow ssh

line vty 0 4

login local

transport input ssh

# Enable the SCP server

ip scp server enable

提示：有关SSH配置的更多信息，请访问。

注意：可以使用aaa代替本地登录。

完成配置后，您可以通过SSH/SCP连接到设备上具有可访问IP地址的设备。

在Linux设备上，您可以将这些命令与设备的IP地址配合使用：

- ssh cisco@192.0.2.1

- scp file.ext cisco@192.0.2.1:file.ext

注意：默认情况下，文件被复制到bootflash。

故障排除

如果遇到问题，请检查以下症状：

1.客户端的OpenSSH版本显示9.0或更高版本。

jeff@jeff-virtual-machine:~$ ssh -V

OpenSSH_9.0p1 Ubuntu-1ubuntu7, OpenSSL 3.0.5 5 Jul 2022

2.客户端显示连接突然关闭，没有任何错误或文件传输。

jeff@jeff-virtual-machine:~$ scp test.txt cisco@192.0.2.1:test.txt

(cisco@192.0.2.1) Password:

scp: Connection closed

3.在路由器上，系统日志显示成功的SSH连接，但文件未传输。

*Mar 26 18:06:57.290: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: cisco] [Source: 192.0.2.2] [localport: 22] at 18:06:57 UTC Sun Mar 26 2023

4.  路由器上的SCP调试不显示任何信息。

c8000v#debug ip scp

Incoming SCP debugging is on

5.  带 — v选项的SCP显示发送SFTP子系统的调试日志。

scp -v test.txt cisco@192.0.2.1:test.txt

Executing: program /usr/bin/ssh host 192.0.2.1, user cisco, command sftp

OpenSSH_9.0p1 Ubuntu-1ubuntu7, OpenSSL 3.0.5 5 Jul 2022

<snip>

debug1: Entering interactive session.

debug1: pledge: filesystem

debug1: Sending environment.

debug1: channel 0: setting env LANG = "en_US.UTF-8"

debug1: Sending subsystem: sftp

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0

scp: Connection closed

6.路由器上的ssh调试显示SSH查找SFTP子系统，然后关闭连接。

c8000v#debug ip ssh detail

ssh detail messages debugging is on

*Mar 24 14:25:05.074: SSH: MD5 compliance exception Registered

*Mar 24 14:25:05.074: SSH1: starting SSH control process

*Mar 24 14:25:05.074: SSH1: sent protocol version id SSH-2.0-Cisco-1.25

*Mar 24 14:25:05.075: SSH1: protocol version id is - SSH-2.0-OpenSSH_9.0p1 Ubuntu-1ubuntu7 <snip>

*Mar 24 14:25:07.370: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: cisco] [Source: 10.10.10.10] [localport: 22] at 14:25:07 UTC Fri Mar 24 2023

*Mar 24 14:25:07.379: SSH2 1: channel open request *Mar 24 14:25:07.389: SSH2 1: env request

*Mar 24 14:25:07.389: SSH2 1: subsystem request *Mar 24 14:25:07.389: SSH2 1: subsystem message received

*Mar 24 14:25:07.389: SSH2 1: searching for subsystem sftp for vty

*Mar 24 14:25:07.490: SSH1: Session terminated normally

7.最后，使用 — O选项的SCP成功。

jeff@jeff-virtual-machine:~$ scp -O test.txt cisco@192.0.2.1:test.txt

(cisco@192.0.2.1) Password:

test.txt 100% 28 2.7KB/s 00:00