GCP use cloud storage file to pull the code from git - shell

I am trying to put a start-up script in cloud storage file for a vm. this cloud storage file will contain pull related command.
so the first step to get a ssh-key, I generate it from bitbucket, now when I went for adding the ssh-key in vm metadata, I saw there is already ssh there in metadata.
How can I use this metadata ssh key to pull the repo from bitbucket. I want to write the shell script to pull the code in cloud storage file and then give this file as startup script for the vm.
I am stuck on how can I access ssh-key. I saw somewhere
cat ~/.ssh/id_rsa.pub
I was guessing this file should show the keys it has as I am able to see the ssh-keys in vm metadata, but it says file not found.
I am looking into wrong file
Thanks,

Related

Unable to decrypt backup files of Mail-in-a-box stored in S3 or locally

I set up backups on Amazon S3. I have received three backup files. I also have access to the secret_key in my /home/user-data/backups directory. In my local windows system, I tried to open the file with gpg4win software. After trying to open the file, it asks me for the passphrase. I pasted the key from secret_key.txt file to there. This does not work as it gives error of Bad Passphrase. Am I doing something wrong?

aws s3 glacier restore from vault

I have vault and need to restore one of the folder from the vault I have initiated the job using AWS CLI and got the inventory using JSON file but unable to get the complete folder from the inventory. Any one can help me restoring the folder?
I am able to get CSV file formate to see the archive ID of the files but is it possible to take the complete folder as it is showing separate archive ID for all files in folder?

Gitlab connectivity from Go CI/CD

I am trying to clone a project from gitlab using GO CI/CD pipeline. Steps i did as below,
I already have ssh key which i have added to gitlab.
tried to clone from my local machine and i am able to clone using "git clone" command
I also tried on the Go-agent server using command "git clone" and project is cloned there.
After clone the project I opened the ssh folder and "known_hosts" file is modified with some key. So i have placed the ssh folder at "C:\Windows\System32\config\systemprofile" location because GO- CD pipeline looks there only.
But whenever i am trying to test the connection of pipeline it says access denied. below is the error
:
Repository ssh://git#gitlab.demo.com/exampleproject/someproject.git not found! :
Error performing command: --- Command ---
git ls-remote ssh://git#gitlab.demo.com/exampleproject/someproject.git
--- Environment ---
{}
--- INPUT ----
--OUTPUT ---
--- ERROR ---
STDERR: Host key verification failed.
STDERR: fatal: Could not read from remote repository.
STDERR:
STDERR: Please make sure you have the correct access rights
STDERR: and the repository exists.
I also tried running command ssh -T git#gitlab.demo.com but it shows "Permission denied (publickey).". Can anyone tell me why? what configuration i am missing?
If you have created a key using the default name of id_rsa, try copying it to C:\Windows\SysWOW64\config\systemprofile.ssh (https://startbigthinksmall.wordpress.com/2012/04/26/how-to-authorize-local-system-account-for-openssh/).
If that doesn't work after restarting your service, or if you think you will need to use more than one identity, the following might be helpful:
I assume restarting your Go-CD server service didn't work and that you are running your Go Server service using the default Local System account. I prefer to run using a domain account as that helps with some tricky permissions issues and this type of configuration. Take a look at this answer first: .ssh/config file for windows (git)
If you are running under a service account, your RSA keys are typically written to ~/.ssh/ - which likely translates to: C:/Users/your-account/.ssh. If this folder doesn't exist, open a command window in admin mode, cd to your account folder and run mkdir .ssh.
When Go-CD makes a connection to a Git repository using SSH, it uses git commands which in turn call ssh commands. With all these layers there are a number of approaches to configuring what identity or identities to use. An article to read first is (https://medium.com/#pinglinh/how-to-have-2-github-accounts-on-one-machine-windows-69b5b4c5b14e) Notice how the sshCommand overrides which identity git will use by specifying the file path to your rsa file.
Instead of editing the git configuration directly, my opinion is that editing the global ssh configuration will better handle multiple identities/keys and will be easier for Go-CD to handle. See https://www.ssh.com/ssh/config/. By default the ssh configuration file is located at ~/.ssh/config. If you don't have one, create a text file named config without any extension. Edit the file and add an entry that specifies the path to your Identity File (RSA Key) or files. For example (https://superuser.com/questions/366649/ssh-config-same-host-but-different-keys-and-usernames):
Host github_username1
Hostname github.com
User git
IdentityFile ~/.ssh/rsa_1
Host github_username2
Hostname github.com
User git
IdentityFile ~/.ssh/rsa_2
This establishes an host alias you can use for your material. So, instead of using git#gitlab.com/pathtorepo, you would use git#github_username2/pathtorepo if you were using the second host shown above.
Always give your Go-CD service a bounce after making changes, just in case.

GitHub - Using multiple deploy keys on a single server

Background
I have a system where when I push changes to my Repository, A web hook sends a request to my site which runs a bash script to pull the changes and copy any updated files.
I added a second repository with its own deploy key but after doing so i was getting a permission denied error when trying to pull changes.
Question
Is there a way to use 2 deploy key's on the same server?
Environment Details
Site uses Laravel 5.6, Symfony used to run shell script
Git 1.7
Go Daddy web hosting (Basic Linux one)
Notes
Script just runs git pull command
Error given is " Permission denied (publickey) "
SHH is used as a deploy key so only read access, there is one other project also using a deploy key on the same server
Thank you in advance for you help! Any other suggestions are welcome!
Edit #1
Edited post to reflect true problem as it was different to what I though (Feel free to revert if this is bad practice), please see answer below for details and solution
What i though was an issue with authentication what actually an issue with the git service not knowing which ssh key to use as i had multiple on the server.
The solution was to use a config file in the .ssh folder and assign alias to specify which ssh key to use for git operations in separate repositories.
Solution is here: Gist with solution
This gist explains the general idea, it suggests using sub-domains however a comment further down uses alias which seems neater.
I have now resolved the issue and the system is working fine with a read-only, passphrase-less deploy key.
This can be done by customizing the GIT_SSH_COMMAND. As ssh .config only gets the host, you have to create aliases to handle different paths. Alternatively, as the git CLI sends the path of the repo to the GIT_SSH_COMMAND, you can intercept the request in a custom script, added in between git and ssh.
You can create a solution where you extract the path and add in the related identity file, if available on the server.
One approach to do this can be found here.
Usage:
cp deploy_key_file ~/.ssh/git-keys/github-practice
GIT_SSH_COMMAND=custom_keys_git_ssh git clone git#github.com:github/practice.git

Local DynamoDB Tables Backup

I want to back my DynamoDB local server. I have install DynamoDB server in Linux machine. Some sites are refer to create a BASH file in Linux os and connect to S3 bucket, but in local machine we don't have S3 bucket.
So i am stuck with my work, Please help me Thanks
You need to find the database file created by DynamoDb local. From the docs:
-dbPath value — The directory where DynamoDB will write its database file. If you do not specify this option, the file will be written to
the current directory. Note that you cannot specify both -dbPath and
-inMemory at once.
The file name would be of the form youraccesskeyid_region.db. If you used the -sharedDb option, the file name would be shared-local-instance.db
By default, the file is created in the directory from which you ran dynamodb local. To restore you'll have to the copy the same file and while running dynamodb, specify the same dbPath.

Resources