Introducción
Este documento describe cómo utilizar la opción -O para garantizar el éxito de SCP de los clientes en OpenSSH9.0 a los dispositivos Cisco IOS® XE.
Solución Aternativa
La opción -O se puede utilizar en las versiones más recientes de OpenSSH con el comando SCP para forzar que SCP se utilice para la transferencia de archivos en lugar de SFTP.
scp -O file.ext username@192.0.2.1:file.ext
Antecedentes
SCP se puede utilizar para transferir archivos entre un cliente SCP y un servidor SCP. SCP utiliza una sesión SSH para la autenticación. Una vez autenticado el usuario, se abre otro canal para transferir el archivo con SCP. En OpenSSH9.0 y versiones posteriores, SSH se sigue utilizando para la autenticación, pero SFTP se utiliza para la transferencia de archivos en lugar de SCP. Esto crea un problema con las versiones actuales de Cisco IOS XE porque actualmente SFTP no es compatible con la transferencia de archivos a través de SSH. La sesión SSH se realiza correctamente y hay un registro de inicio de sesión correcto en el buffer de syslog. Sin embargo, la conexión se cierra abruptamente cuando el cliente SCP intenta iniciar la transferencia SFTP.
Configuración de SSH y SCP
Prerrequisitos para utilizar un cliente SCP para transferir un archivo a un dispositivo Cisco IOS XE.
- Se debe configurar SSH
- Se debe configurar el inicio de sesión local o AAA
- Se requiere el nivel de privilegio 15 para que el usuario pueda iniciar SCP
- El servidor SCP debe estar habilitado
Aquí hay un ejemplo de configuración
# 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
Consejo: Puede encontrar información adicional sobre la configuración SSH aquí.
Nota: aaa se puede utilizar en lugar del inicio de sesión local.
Una vez finalizada la configuración, puede conectar SSH/SCP al dispositivo con una dirección IP alcanzable en el dispositivo.
Desde un dispositivo Linux, puede utilizar estos comandos con la dirección IP del dispositivo:
Nota: De forma predeterminada, el archivo se copia en bootflash.
Troubleshoot
Si se produce el problema, compruebe estos síntomas:
1. La versión OpenSSH del cliente muestra 9.0 o superior.
jeff@jeff-virtual-machine:~$ ssh -V
OpenSSH_9.0p1 Ubuntu-1ubuntu7, OpenSSL 3.0.5 5 Jul 2022
2. El cliente muestra que la conexión se cierra abruptamente sin ningún error o transferencia de archivos.
jeff@jeff-virtual-machine:~$ scp test.txt cisco@192.0.2.1:test.txt
(cisco@192.0.2.1) Password:
scp: Connection closed
3. En el router un syslog muestra la conexión SSH exitosa pero el archivo no fue transferido.
*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. Las depuraciones de SCP en el router no muestran ninguna información.
c8000v#debug ip scp
Incoming SCP debugging is on
5. La opción SCP with -v muestra los registros de depuración que envían el subsistema 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 debugs en el router muestra que SSH busca un subsistema SFTP y luego cierra la conexión.
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. Por último, SCP con la opción -O tiene éxito.
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