Generally people use usernames and passwords to gain access to computer systems. SSH keys are a more secure form of authentication. SSH keys are encrypted strings of text stored in computer files. SSH keys are used in pairs--public keys and private keys. Each key is a file.
It's a difficult to explain the complexities of encryption and frankly I don't fully understand it. But suffice it to say, SSH keys are like twins who have their own secret language that nobody else understands.
A public key is a kind of username and the private key is a password. But a traditional username, the public key is a question or more specifically a riddle with an answer that can't be really be guessed--the private key is the answer. There's no harm in sharing your username/public key, but your password/private key should be a guarded secret.
A user is required to generate their own public and private SSH keys. Once generated, the keys are stored on your computer (usually in a hidden SSH folder for your user account) and your public key is uploaded to the computer/server.