As an additional security measure, it is possible to enable the option to use one key pair per client. In this case, each client can have its own key pair. Those clients who do not have their own key pair will use the global key pair (which was sent or created during the account creation).
To enable this option, go to the Account/Key Management page and activate the "Allow public/private key pair per client" option.
When you enable this option all your clients will continue to use the global key pair until they are given their own key pair. Only those clients who have their own key pairs will use them, while clients without their own key pairs will use the global key. If you delete a client's key, it will start using the global key from that moment on. Be careful when manipulating keys, as deleting a client's key may block it.
There are several ways to send a client's public key:
This method provides greater security since you can create the keys on the client, and the private key never leaves the client.
Example:
$ python3 sshreachme.py createkeypair
Creating key pair...
Key pair written to id_rsa and id_rsa.pub files
Uploading public key...
Public key uploaded
Example:
$ python3 sshreachme.py uploadpublickey id_rsa.pub
Uploading public key...
Public key uploaded
Example:
curl -d "user_id=1&db_server_key=aat4tsfsdheg54sIUa42&host_uuid=34vj3h8a-22ab-a02l-s0lc-aa012la02lj7" --data-urlencode "public_key=PUBLIC_KEY" https://sshreach.me/init/my/upload_public_key.json
Please note that although using client-specific key pairs increases security, all those keys are written into the authorized_keys file on our server, which is a plain text file. Sending a large number of keys (more than a few hundred) may affect the tunnel opening speed, as the system has to go through the entire file and analyze all the keys.