One needs to define domain-name before it's possible to generate SSH keys:
sw1(config)#crypto key generate rsa
% Please define a domain-name first.
sw1(config)#ip domain-name test.net
sw1(config)#crypto key generate rsa
The name for the keys will be: sw1.test.net
Choose the size of the key modulus in the range of 360 to 2048 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [512]:
Why is domain-name required? Is the domain-name used in key generation?