I have a single machine (client) and several servers and I need to take from them several files through sftp. My idea is to generate a pair of public and private keys in the client, and copy the public key to the different servers to be able to access them later. Does this make sense or is it a bad practice?
Yes, this makes sense.
With key pairs, the private key is important to keep secure, and in your scenario you're generating it on the client and keeping it only on the client.
The public key can be copied to as many places as you'd like to log in to, without threatening the security of your logins. This matches what you're doing, copying it to the servers you need to access.