In this article, we will look into 5 Best Steps to Register SSH Key for Source Repositories in Google Cloud(GCP). If you are developer or programmer then you might be checking out your project code in remote Git Repository after you register ssh key pair. In case of Google Cloud Source Repositories also, you need to follow the same steps to check out your code. But before this you need to first register ssh key in Google Cloud. This can be easily done by following below given steps.
Steps to Register SSH Key in Google Cloud(GCP)
Step 1: Prerequisites
a) You should have
ssh-keygen tool installed in your Server.
b) You should have permission to run
ssh-keygen utility in your Server.
c) You need a valid
Google Email ID and
d) You should have Git Client tool installed in your Server.
e) You should have a Repo created in your Cloud Source Repositories.
Step 2: Generate SSH Key Pair
In the first step, you need to generate SSH Key pair using
ssh-keygen tool. You can either use any Linux based Server or even Cloud Shell to generate the Key pair. Just run ssh-keygen -t rsa command as shown below. It will first ask the file name and path to save the private key. Since we are using default path here so we won't change anything and will just press
Enter. Next, it will ask for passphrase. Since we are not using any passphrase so here also we will just press
Enter. You can notice that the chosen default path is also used to save the public key
id_rsa.pub as both the keys will be on same path.
[centos@localhost ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/centos/.ssh/id_rsa): Created directory '/home/centos/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/centos/.ssh/id_rsa. Your public key has been saved in /home/centos/.ssh/id_rsa.pub. The key fingerprint is: SHA256:VrXtpj7OeH1LdVxk6/Zg40Ql2dH+LyjRlUaHPBcGcLI email@example.com The key's randomart image is: +---[RSA 2048]----+ | oo+oBB | | .+oB=* | | .E..oB. | | . o=.o | | S . oBo= | | . . .*.o= | | ..o..o | | .++ + o | | .++. +. | +----[SHA256]-----+
You can go to
/home/centos/.ssh path and check your both the keys.
[centos@localhost .ssh]$ ls -lrt total 8 -rw-r--r--. 1 centos centos 410 Apr 1 22:26 id_rsa.pub -rw-------. 1 centos centos 1679 Apr 1 22:26 id_rsa
If you open your public key, then it should look like below. You can use Linux utility like
cat command to open a file. You can just do cat id_rsa.pub command to open public key.
[centos@localhost .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8o1tZNa3VzYySZIy8YVDTPd+e78f4QYMdFKVNs3THnEX9uB2N0hji2M7nT5rqH34Fnjx11/ka3697J9hNKeQmAbU51L2YVkdOduVy9hX9x2Pb/jWKaJ6etW3KIxHOAEN8AlYvD+lmkfllFHkhvfv70WqcGmq+k1NppH7H4Qjpy1PrkXqUTtoZm/Z/SaXKQpb22hb6VH3kuKr727D/Bb1eBVfe7hHpsBzAig/Rs//3Px0j+wuvA5Eukqx4DubfWmYtgANDz/p4tzH+E9gb+igafxrxrwPa2i4oAUpre0DO8BwQrRbY2pRj2NBPNHGyWAoRJfOXptNnA6/KChLR4qyH firstname.lastname@example.org
Similarly, if you open your private key using
cat id_rsa command then it should look like below.
[centos@localhost .ssh]$ cat id_rsa -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAvKNbWTWt1c2MkmSMvGFQ0z3fnu/H+EGDHRSlTbN0x5xF/bgd jdIY4tjO50+a6h9+BZ48ddf5Gt+veyfYTSnkJgG1OdS9mFZHTnblcvYV/cdj2/41 imienrVtyiMRzgBDfAJWLw/pZpH5ZRR5Ib37+9FqnBpqvpNTaaR+x+EI6ctT65F6 lE7aGZv2f0mlykKW9toW+lR95Liq+9uw/wW9XgVX3u4R6bAcwIoP0bP/9z8dI/sL rwORLpKseA7m31pmLYADQ8/6eLcx/hPYG/ooGn8a8a8D2touKAFKa3tAzvAcEK0W 2NqUY9jQTzRxslgKESXzl6bTZwOvygoS0eKshwIDAQABAoIBAFbGvwr2ypUEDZp6 btNp4QiL+gbfPxpQ6MQW75ci6qG4nentfIr1D0WrfuKhmB4DhrGG7UE4rPtT0yHQ XoyArNdfCcMkvmMJrZvGzh5oXg10X9efxXl6Tx2rUGogX9xn+qNdX9AefbwVgqih FmgTQYvB9k0BSgGJPGHorfm856DEgcP9F+btcSGhxjMWWTBo9DubW01sTzB6eVh8 dJ5O4xDChbTcN/wzz7BGSbwPYUL7jJm1g7Au7/v1oc9rS5ICZDK/+yFvajKVVYmR 9FX+EhOn3CZiZpz9i9vRl4BaQj08H7P9/ppTRrpAvAu3K+OBPnxhk5vzwhxdNMaZ mcHSeEECgYEA6Es0eaDOormhkLygXldYURhEVNn540pY8XuSxWJT6Xvgpw23MCTe W89yPTqilFmqn61XplBw8fsjI8zagJKjRePMNxMMOWagrkM5Ra6UIeVkDSnYAjg2 iZEemCEK3Znnilgrs/xE3eLKY942cYUnTCmM5wjoTXTdbJVxTLANMHkCgYEAz+Og DZYVZLoh72HjW7P5sBwRB4MHHGEpVHY3Nv9c15axHkKcF7yipOKkDNr9eKNqTuK7 vNEd8rK5xJwDOcseiHw1OaZvN2ylCK5khlYCeKKZR+CC5g9uI77iiErmS293710F bE0qVpCiKeYLfQvCKpTSnwFIPKWP/P/2r6+JhP8CgYEA3+S0pFKhN+iR2A5mx+eK IUexfNNH7pIXXlGL6qHWXSHgK0OmAEpY48bzxh5A25n9QcByzcOUyTcU7ImjRO+R XWityZubWawYTT5P8mDNOEp//8wH/kOuFTKOeAHJFkQkDozjOqx4uCJyXMWuVgZQ FTGrNHe6aAWu8dysgozheYkCgYEAzBHpUozqkUc5+q//rExepWbXvKT9vPkPxi6J gv0tuN/fHBOPAewVSICGg2wQ93SK7ccafX5VxKL3RC3V6MygO2CaKu5bLHAFDSGL 4mbZ49wPJUSZmla5SnOeEiZcLN7OP/TzVt3k2rb9yN1el7CMOJqAqr9qdsYbM0Lc mJdbCmcCgYAwvs+IJGmGGy3TGGFUU52bKeHV8o1bNEqXCt6apOq0xKrl720ajJ7v 98C0thV8om4JH7ifsHU1E8OWYy7FqSapo6kwVI+yzcOxQsuPCpc6j3EnpmW7B4aT n+lCqlxXqK6y+O6kzqL4uUFJY8ccju3IDXeQxkJjoRXQWHJyWmHFIg== -----END RSA PRIVATE KEY-----
Step 3: Open Cloud Source Repositories
Once the key pair is generated, you can open Cloud Source Repositories either by scrolling down to
Source Repositories option on Dashboard or by searching
Source Repositories from the
Search Box as shown below.
Step 4: Register Public Key in Google Cloud
In the Cloud Source Repositories, you will see 3 vertical dots on top right corner. If you Click that you will see a list of options like below. You need click on
Manage SSH Keys option.
Once you clicked on Manage SSH Keys, you will be able to see below screen where you need to click on
Register SSH Key.
Here you need to provide a unique Key Name and paste the public key from
id_rsa.pub that you generated in the previous step. Then Click on
If everything goes well, then the key will get registered successfully and it will look like below.
Step 5: Authenticate through Private Key
Now it is time to test your key by authenticating through private key that you have generated in earlier step. You will find your private key under
/home/centos/.ssh/id_rsa path. We have a repo
sample-project-repo1 created in Google Cloud which we will clone first in our local git repository using
git clone command as shown below.
[centos@localhost ~]$ git clone ssh://email@example.com@source.developers.google.com:2022/p/sample-project-308612/r/sample-project-repo1 Cloning into 'sample-project-repo1'... The authenticity of host '[source.developers.google.com]:2022 ([126.96.36.199]:2022)' can't be established. ECDSA key fingerprint is SHA256:AGvEpqYNMqsRNIviwyk4J4HM0lEylomDBKOWZsBn434. ECDSA key fingerprint is MD5:74:84:6c:08:d5:b5:54:68:19:da:2a:8e:4c:5b:d3:0d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[source.developers.google.com]:2022,[188.8.131.52]:2022' (ECDSA) to the list of known hosts. warning: remote HEAD refers to nonexistent ref, unable to checkout.
Once the repo is cloned you can see a directory
sample-project-repo1 created below. You need to go inside the directory using
cd sample-project-repo1 command. Since our repo was empty so you won't able to see any files here if you try to list it using
ls -lrt command.
[centos@localhost ~]$ ls -lrt total 0 drwxrwxr-x 3 centos centos 18 Apr 2 06:34 sample-project-repo1 [centos@localhost ~]$ cd sample-project-repo1/ [centos@localhost sample-project-repo1]$ ls -lrt total 0
We will go ahead and try to create a sample
cloudbuild.yaml file using touch cloudbuild.yaml command. Then add that in our current local git repo.
[centos@localhost sample-project-repo1]$ touch cloudbuild.yaml [centos@localhost sample-project-repo1]$ git add .
Before committing anything it is required to setup your
email ID and
user name in the repo.
[centos@localhost sample-project-repo1]$ git config --global user.email "firstname.lastname@example.org" [centos@localhost sample-project-repo1]$ git config --global user.name "John Wick"
Once everything is done, you can simply commit by giving any useful comment as shown below. More on git documentation.
[centos@localhost sample-project-repo1]$ git commit -m "Initial Commit" [master (root-commit) 3d3c806] Initial Commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 cloudbuild.yaml
If the commit is successful then you can push your changes to your Cloud Repo using git push -u origin master command as shown below.
[centos@localhost sample-project-repo1]$ git push -u origin master Counting objects: 3, done. Writing objects: 100% (3/3), 223 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://email@example.com@source.developers.google.com:2022/p/sample-project-308612/r/sample-project-repo1 * [new branch] master -> master Branch master set up to track remote branch master from origin.
Now if you go to your Google Cloud Repositories and check the recently added file then it should like below. It confirms that you have successfully registered your ssh key and it is working fine.