Einleitung
In diesem Dokument wird beschrieben, wie Sie mit der Option -O sicherstellen, dass die SCP von Clients mit OpenSSH9.0 auf Cisco IOS® XE-Geräten erfolgreich ausgeführt wird.
Problemumgehung
Die Option -O kann auf neueren Versionen von OpenSSH mit dem SCP-Befehl verwendet werden, um zu erzwingen, dass SCP für die Dateiübertragung anstelle von SFTP verwendet wird.
scp -O file.ext username@192.0.2.1:file.ext
Hintergrundinformationen
SCP kann zum Übertragen von Dateien zwischen einem SCP-Client und einem SCP-Server verwendet werden. Der SCP verwendet eine SSH-Sitzung für die Authentifizierung. Sobald der Benutzer authentifiziert wurde, wird ein anderer Kanal geöffnet, über den die Datei mit SCP übertragen wird. In OpenSSH9.0 und höheren Versionen wird SSH weiterhin für die Authentifizierung verwendet, aber für die Dateiübertragung wird SFTP anstelle von SCP verwendet. Dies führt zu einem Problem mit den aktuellen Versionen von Cisco IOS XE, da SFTP derzeit nicht für die Übertragung von Dateien über SSH unterstützt wird. Die SSH-Sitzung ist erfolgreich, und im Syslog-Puffer befindet sich ein Anmeldungserfolgsprotokoll. Die Verbindung wird jedoch abrupt geschlossen, wenn der SCP-Client versucht, die SFTP-Übertragung zu starten.
Konfigurieren von SSH und SCP
Erfordert die Verwendung eines SCP-Clients zum Übertragen einer Datei auf ein Cisco IOS XE-Gerät.
- SSH muss konfiguriert werden
- Lokale Anmeldung oder AAA müssen konfiguriert werden
- Für den Benutzer der SCP ist die Privilegstufe 15 erforderlich.
- Der SCP-Server muss aktiviert sein.
Hier sehen Sie eine Beispielkonfiguration.
# 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
Tipp: Weitere Informationen zur SSH-Konfiguration finden Sie hier.
Hinweis: aaa kann anstelle der lokalen Anmeldung verwendet werden.
Nach Abschluss der Konfiguration können Sie SSH/SCP mit einer erreichbaren IP-Adresse auf dem Gerät konfigurieren.
Von einem Linux-Gerät aus können Sie die folgenden Befehle mit der IP-Adresse des Geräts verwenden:
Hinweis: Standardmäßig wird die Datei in den Bootflash kopiert.
Fehlerbehebung
Wenn das Problem auftritt, suchen Sie nach den folgenden Symptomen:
1. Die OpenSSH-Version des Clients zeigt 9.0 oder höher an.
jeff@jeff-virtual-machine:~$ ssh -V
OpenSSH_9.0p1 Ubuntu-1ubuntu7, OpenSSL 3.0.5 5 Jul 2022
2. Der Client zeigt an, dass die Verbindung ohne Fehler oder Dateiübertragung abrupt geschlossen wird.
jeff@jeff-virtual-machine:~$ scp test.txt cisco@192.0.2.1:test.txt
(cisco@192.0.2.1) Password:
scp: Connection closed
3. Auf dem Router zeigt ein Syslog die erfolgreiche SSH-Verbindung an, aber die Datei wurde nicht übertragen.
*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-Debugging-Vorgänge auf dem Router zeigen keine Informationen an.
c8000v#debug ip scp
Incoming SCP debugging is on
5. Die SCP-Option mit der Option -v zeigt Debug-Protokolle an, die das SFTP-Subsystem senden.
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 auf dem Router zeigen, dass SSH nach einem SFTP-Subsystem sucht und dann die Verbindung schließt.
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. Schließlich ist SCP mit der Option -O erfolgreich.
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