Setting a custom path for git private SSH key on linux

后端 未结 5 1394
春和景丽
春和景丽 2021-01-30 17:19

I\'m trying to setup a git client on linux. I uploaded my private key to the machine, and I understand that I should put it in ~/.ssh, but I don\'t have access to that folder.

相关标签:
5条回答
  • 2021-01-30 17:35

    You can achieve that using a ssh config file.

    First create a file inside your ~/.ssh folder named config, you can use some command like the following

    $ nano ~/.ssh/config
    

    Then, the content of the file should have the location of your key based on each host name. for example:

    Host github.com
     IdentityFile ~/myPublicKeyFolder/myGitHubFile
    Host heroku.com
     IdentityFile ~/myPublicKeyFolder/myHerokuFile
    

    So, when git tries to access each host it will follow the rules inside this config file based on the git host your trying to reach

    0 讨论(0)
  • 2021-01-30 17:38

    One option is to use ssh-agent and provide a file name to ssh-add.

    For example:

    $ ssh-agent /bin/bash
    $ ssh-add ~/mykeys/id_rsa
    
    0 讨论(0)
  • 2021-01-30 17:40

    For a project I am working on my app needs to spit out a shell script with all of the git commands to init/commit/push to an external repository. The ~/.ssh/config is off limits so I have my public/private keys in my app directory. I used vhallac's answer. This is what I had to do in my shell script to use my key:

    eval `/usr/bin/ssh-agent`
    ssh-add /path/to/.ssh/id_rsa
    

    hope this helps someone

    0 讨论(0)
  • 2021-01-30 17:52

    I would have said put the file name in ~/.ssh/config, but you likely would not have access to this file, too.

    You can give ssh the private key to use with the -i keyfile option.

    Now how to say git which options to pass to ssh?

    The GitTips page says create a wrapper script and point to it with the GIT_SSH environment variable.

    It looks like you also can use the git configuration core.gitProxy, but I did not find a good example and some mailing list message suggests it is only for the git: protocol.

    0 讨论(0)
  • 2021-01-30 17:58

    Use ssh-agent

    ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'
    
    0 讨论(0)
提交回复
热议问题