Automatic generation of SSH keys for VCS
Project description
py-gitsshgen
Automatic generation of SSH keys for VCS
Why?
I was incredibly tired of doing the same procedure over and over for dozens of different VCS hosted in cloud and on-prem. There was no full-pledge solution offered even in hub
and lab
for end-to-end setup of SSH key for login to Git across different platforms.
How to use?
The script generates OpenSSH keypair and pushes public key to VCS using PAT (Personal Access Token) or App Password (Bitbucket only). The private key automatically goes to ~/.ssh/{name}.pem
+ reference to it is appended to ~/.ssh/config
for automatic pickup by Git with OpenSSH configuration. The setup is assumed OpenSSH always.
Supported parameters for key generation - https://asyncssh.readthedocs.io/en/latest/api.html#asyncssh.generate_private_key Supported parameters for private key export - https://asyncssh.readthedocs.io/en/latest/api.html#asyncssh.SSHKey.export_private_key
Default settings:
- Algo for generation - ssh-ed25519
- No passphrase
- Output private key with cipher AES256 with SHA256 hashing and 128 rounds of bcrypt.
You can install it using pip
pip install gitsshgen
All actions are done interactively in terminal:
usage: gitsshgen [-h] [-t T] [-api API_URL] [-n N] [-a ALGO] [-ks KEY_SIZE] [-e EXPONENT] [-p PASSPHRASE] [-c CIPHER] [-r ROUNDS] [-hn HASH_NAME] [-sl SSH_LABEL]
{github,gitlab,bitbucket,gogs,gitea} url u
positional arguments:
{github,gitlab,bitbucket,gogs,gitea}
instance type
url instance url
u instance username
optional arguments:
-h, --help show this help message and exit
-t T personal application token
-api API_URL API URL endpoint
-n N, --name N name for private key
-a ALGO, --algorithm ALGO
algorithm for keypair (default is ssh-ed25519)
-ks KEY_SIZE, --key-size KEY_SIZE
key size (only for RSA)
-e EXPONENT, --exponent EXPONENT
exponent (only for RSA)
-p PASSPHRASE, --passphrase PASSPHRASE
passphrase for OpenSSH key (default is None)
-c CIPHER, --cipher CIPHER
cipher for OpenSSH key (default is aes256)
-r ROUNDS, --rounds ROUNDS
rounds for OpenSSH key (default is 128)
-hn HASH_NAME, --hash-name HASH_NAME
hash name for OpenSSH key (default is sha256)
-sl SSH_LABEL, --ssh-label SSH_LABEL
ssh label in VCS
Example with token:
gitsshgen bitbucket bitbucket.org testusername -t testtoken
If you don't provide token, script will open browser on page where you can make one, and ask you to enter it.
gitsshgen bitbucket bitbucket.org testusername
VCS Compatibility
- Github
- Gitlab
- Gogs
- Bitbucket
- Gitea
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gitsshgen-1.2.3.tar.gz
.
File metadata
- Download URL: gitsshgen-1.2.3.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9e3235d532fdc60c3153ca4881f98ceb1f64b9955601e72d147c174a46a1523 |
|
MD5 | 5c7d0c862b316da12201f1ea493efa5f |
|
BLAKE2b-256 | 1382e80dd6820df8f8b5fb0176b8daad9843ab73f848cf2653fb945d1dfdb4ce |
File details
Details for the file gitsshgen-1.2.3-py3-none-any.whl
.
File metadata
- Download URL: gitsshgen-1.2.3-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4d7f030397c12595ca8c12d92c779018a793454aa5af4783965e5f0f633f6e6 |
|
MD5 | fdfadf48c3525c8076b2d0b9ecdbfea8 |
|
BLAKE2b-256 | f227ef9b3af9d88a5a214960291e62884dc4a58ecd6655b8cbc793b55ffe7443 |