Introduction
Ce document décrit comment utiliser l'option -O pour assurer la SCP réussie des clients sur OpenSSH9.0 aux périphériques Cisco IOS® XE.
Solution de contournement
L'option -O peut être utilisée sur les versions plus récentes d'OpenSSH avec la commande SCP pour forcer SCP à être utilisé pour le transfert de fichiers au lieu de SFTP.
scp -O file.ext username@192.0.2.1:file.ext
Informations générales
SCP peut être utilisé pour transférer des fichiers entre un client SCP et un serveur SCP. SCP utilise une session SSH pour l'authentification. Une fois l'utilisateur authentifié, un autre canal est ouvert pour transférer le fichier avec SCP. Dans OpenSSH9.0 et les versions ultérieures, SSH est toujours utilisé pour l'authentification, mais SFTP est utilisé pour le transfert de fichiers au lieu de SCP. Cela crée un problème avec les versions actuelles de Cisco IOS XE car SFTP n'est pas pris en charge actuellement pour transférer des fichiers sur SSH. La session SSH réussit et il y a un journal de réussite de connexion dans le tampon syslog. Cependant, la connexion se ferme brusquement lorsque le client SCP tente de démarrer le transfert SFTP.
Configurer SSH et SCP
Prérequis pour utiliser un client SCP pour transférer un fichier vers un périphérique Cisco IOS XE.
- SSH doit être configuré
- La connexion locale ou AAA doit être configurée
- Le niveau de privilège 15 est requis pour que l'utilisateur puisse accéder à la SCP
- Le serveur SCP doit être activé
Voici un exemple de configuration
# 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
Conseil : des informations supplémentaires sur la configuration SSH sont disponibles ici.
Remarque : aaa peut être utilisé à la place de la connexion locale.
Une fois la configuration terminée, vous pouvez établir une connexion SSH/SCP vers le périphérique avec une adresse IP accessible sur le périphérique.
À partir d'un périphérique Linux, vous pouvez utiliser ces commandes avec l'adresse IP du périphérique :
Remarque : par défaut, le fichier est copié dans bootflash.
Dépannage
Si le problème se produit, recherchez les symptômes suivants :
1. La version OpenSSH du client affiche 9.0 ou une version ultérieure.
jeff@jeff-virtual-machine:~$ ssh -V
OpenSSH_9.0p1 Ubuntu-1ubuntu7, OpenSSL 3.0.5 5 Jul 2022
2. Le client montre que la connexion se ferme brusquement sans erreur ni transfert de fichiers.
jeff@jeff-virtual-machine:~$ scp test.txt cisco@192.0.2.1:test.txt
(cisco@192.0.2.1) Password:
scp: Connection closed
3. Sur le routeur, un syslog indique la connexion SSH réussie, mais le fichier n’a pas été transféré.
*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. Les débogages SCP sur le routeur n’affichent aucune information.
c8000v#debug ip scp
Incoming SCP debugging is on
5. SCP avec l'option -v affiche les journaux de débogage qui envoient le sous-système 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. Les débogages ssh sur le routeur montrent que SSH recherche un sous-système SFTP, puis ferme la connexion.
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. Enfin, SCP avec l'option -O réussit.
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