I’ve been wanting to try out SCP to copy IOS images to routers for a while, as I figured it would be faster and cleaner than FTP/TFTP. There’s essentially three tricks to getting it working..
- Having the correct AAA permissions
- Understanding the SCP syntax and file systems
- Making the scp command from the router VRF aware, if required
- 16.6.7 or 16.9.4 or newer code. Performance on older IOS-XE versions is terrible
First, SSH has to be enabled and of course the SCP server must be activated
ip ssh version 2 ip scp server enable
After doing so, verify the router is accessible via SSH. If not, try generating a fresh key:
Router(config)#crypto key generate rsa modulus 2048
Now on to the AAA configuration. The important step is have accounts automatically go to their privilege level 15 without manually entering enable mode. This is done with the “aaa authorization exec” command:
aaa new-model ! username admin privilege 15 password 7 XXXXXXX ! aaa group server radius MyRadiusServer server-private 10.1.1.100 auth-port 1812 acct-port 1813 key 7 XXXXXXXX ip vrf forwarding MyVRF ! aaa authentication login default local group MyRadiusServer aaa authentication enable default none aaa authorization config-commands aaa authorization exec default local group MyRadiusServer if-authenticated
The RADIUS server will also need this vendor-specific attribute in the policy:
Vendor: Cisco Name: Cisco-AV-Pair Value: priv-lvl=15
If I SSH to the router using a RADIUS account, I should automatically see enable mode:
$ ssh billy@10.1.1.1 Password: Router#show privilege Current privilege level is 15
I can now upload IOS images to a router with IP address 10.1.1.1 like this:
scp csr1000v-universalk9.16.06.06.SPA.bin billy@10.1.1.1:bootflash:/csr1000v-universalk9.16.06.06.SPA.bin
If copying images from the router where the egress interface is on a VRF, the source interface must be specified:
ip ssh source-interface GigabitEthernet0
And simply use the IOS copy command:
copy scp://billy@10.1.1.2:/csr1000v-universalk9.16.06.06.SPA.bin bootflash:
Note scp’s performance in IOS-XE 16.6.5, was very poor, but excellent in 16.6.7 and 16.9.4