there were no instructions/steps for telling gitlab where the private key resides in on my mac os x
O servidor remoto não precisa saber onde está sua chave privada local. Nunca vê e nunca deveria. Ele permanece na sua máquina e não é transmitido nunca.
This makes me think that maybe sshkeygen automatically puts the key into some kind of standard repository location?
Há um nome de arquivo padrão mencionado quando ele pede que você (opcionalmente) defina seu próprio nome de chave, provavelmente /home/you/.ssh/id_rsa
. Essa é a chave privada. Também cria uma chave pública com o sufixo .pub
. Se você nomeá-los você mesmo, você pode colocá-los em qualquer lugar, mas AFAIK ambos os arquivos devem estar no mesmo diretório.
Se você não usa o nome padrão, para usar a chave, você deve registrá-lo com ssh-agent
via ssh-add
, ou então especificá-lo na linha de comando quando você chamar ssh, por exemplo:
ssh -i ~/.ssh/mykey ....
Observe que não é mykey.pub
, mas (como mencionado) mykey.pub
deve estar no mesmo diretório que mykey
. Ou seja, -i
refere-se à chave privada . Se a chave é protegida por senha, você será solicitado para isso. Então o ssh envia a chave pública para o servidor.
Se você não especificar uma chave com -i
, a chave /home/you/.ssh/id_rsa
, se houver, será usada. Se você estiver usando a chave padrão, você pode ignorar o resto disso.
Para usar uma chave não padrão com git
(ou seja, se você desativou a opção "id_rsa"), será necessário registrá-la primeiro com ssh-agent
. A idéia por trás do ssh-agent é usá-lo para invocar um shell ou algum outro aplicativo persistente que criará um shell a partir do qual você invoca o git (como a própria GUI, provavelmente existe um método específico do OSX). Por exemplo:
> ssh-agent bash
Inicia um novo subshell de ação sob o agente ssh. Próximo:
> ssh-add ~/.ssh/mykey
Novamente, a chave privada. Você pode adicionar quantos deles quiser. Subsequentemente, quando o ssh é usado dentro desse shell ou de um filho dele, ele tentará essa lista de chaves automaticamente com o servidor remoto. Para clonar com git:
git clone ssh://me@wherever/some/repo/path