Desejo usar várias chaves privadas para conectar-me a diferentes servidores ou partes diferentes do mesmo servidor (meus usos são administração do sistema do servidor, administração do Git e uso normal do Git no mesmo servidor). Tentei simplesmente empilhar as chaves nos id_rsa
arquivos sem sucesso.
Aparentemente, uma maneira direta de fazer isso é usar o comando
ssh -i <key location> [email protected]
Isso é bastante complicado.
Alguma sugestão de como fazer isso um pouco mais fácil?
Respostas:
Do meu
.ssh/config
:E assim por diante.
fonte
IdentityFile
entradas para a mesmaHost
, que são tentadas em ordem ao se conectar.IdentitiesOnly yes
para impedir ~ / .ssh / id_rsa ou quaisquer outras identidades. (Esta foi originalmente uma edição)Você pode instruir o ssh a tentar várias chaves sucessivamente ao se conectar. Aqui está como:
Dessa forma, você não precisa especificar qual chave funciona com qual servidor. Apenas usará a primeira chave de trabalho.
Além disso, você só digitaria uma senha se um determinado servidor estiver disposto a aceitar a chave. Como visto acima, o ssh não tentou solicitar uma senha,
.ssh/id_rsa
mesmo que tivesse uma.Certamente não supera uma configuração por servidor como em outras respostas, mas pelo menos você não precisará adicionar uma configuração para todo e qualquer servidor ao qual você se conecta!
fonte
A resposta de Randal Schwartz quase me ajudou por todo o caminho. Eu tenho um nome de usuário diferente no servidor, então tive que adicionar a palavra-chave Usuário ao meu arquivo:
Agora você pode se conectar usando o nome amigável:
Mais palavras-chave podem ser encontradas na página do manual OpenSSH . NOTA: Algumas das palavras-chave listadas podem já estar presentes no seu arquivo / etc / ssh / ssh_config .
fonte
As respostas anteriores explicaram adequadamente a maneira de criar um arquivo de configuração para gerenciar várias chaves ssh. Penso que o importante que também precisa ser explicado é a substituição de um nome de host por um nome alternativo ao clonar o repositório .
Suponha que o nome de usuário da sua conta GitHub seja abc1234 . E suponha que o nome de usuário da sua conta pessoal do GitHub seja jack1234
E suponha que você tenha criado duas chaves RSA, ou seja, id_rsa_company e id_rsa_personal . Portanto, seu arquivo de configuração será semelhante a seguir:
Agora, quando você estiver clonando o repositório (chamado demo) da conta GitHub da empresa, a URL do repositório será algo como:
Agora, enquanto estiver fazendo
git clone
, você deve modificar a URL do repositório acima como:Observe como o github.com agora é substituído pelo alias "company", conforme definido no arquivo de configuração.
Da mesma forma, você deve modificar o URL do clone do repositório na conta pessoal, dependendo do alias fornecido no arquivo de configuração.
fonte
Teste-o antes de adicionar com:
Se você tiver algum problema com erros, às vezes, alterar a segurança do arquivo ajuda:
fonte
Gere uma chave SSH:
Gere outra chave SSH :
Agora, duas chaves públicas ( id_rsa.pub , accountB.pub ) devem existir no
~/.ssh/
diretórioCrie um arquivo de configuração
~/.ssh/config
com o seguinte conteúdo:Clone da
default
conta.Clone da
accountB
conta.Veja mais aqui
fonte
Eu concordo com Tuomas sobre o uso do ssh-agent. Eu também queria adicionar uma segunda chave privada para o trabalho e este tutorial funcionou como um encanto para mim.
Os passos são os seguintes:
$ ssh-agent bash
$ ssh-add /path.to/private/key
por exemplossh-add ~/.ssh/id_rsa
$ ssh-add -l
$ssh -v <host url>
egssh -v [email protected]
fonte
ssh-agent
por anos, recentemente mudei para o Gnomegnome-keyring
no meui3
ui. O motivo é simples: o gerenciador de chaveiros do Gnome lida automaticamente com a adição e remoção de chaves ssh sem que eu precise me lembrarssh-add
. Além de me fornecer uma única senha para desbloqueá-los (e tempo limite em um horário especificado, por segurança). Cada um na sua. Desde que eu uso as configurações do gnome no Arch, foi plug and play com minha configuração. Se você é anti-gnomo, ignore este comentário.Eu já havia enfrentado esse problema há algum tempo, quando tinha duas contas Bitbucket e queria armazenar chaves SSH separadas para ambas. Isto é o que funcionou para mim.
Criei duas configurações ssh separadas da seguinte maneira.
Agora, quando eu tive que clonar um repositório da minha conta de trabalho - o comando foi o seguinte.
Eu tive que modificar este comando para:
Da mesma forma, o comando clone da minha conta pessoal teve que ser modificado para
Consulte este link para obter mais informações.
fonte
Use ssh-agent para suas chaves.
fonte
Agora, com a versão recente do Git, podemos especificar sshCommand no arquivo de configuração Git específico do repositório:
fonte
Você pode criar um arquivo de configuração nomeado
config
em sua~/.ssh
pasta. Pode conter:Isso permitirá que você se conecte a máquinas como esta
fonte
IMPORTANTE: Você deve iniciar o ssh-agent
Você deve iniciar o ssh-agent (se já não estiver em execução) antes de usar o ssh-add da seguinte maneira:
Observe que o comando eval inicia o agente no Git Bash no Windows. Outros ambientes podem usar uma variante para iniciar o agente SSH.
fonte
No Ubuntu 18.04 (Bionic Beaver) não há nada para fazer.
Depois de criar com êxito uma segunda chave SSH, o sistema tentará encontrar uma chave SSH correspondente para cada conexão.
Só para esclarecer, você pode criar uma nova chave com estes comandos:
fonte
Vários pares de chaves no GitHub
1.0 arquivo de configuração SSH
1.1 Criar ~ / .ssh / config
1.2 chmod 600 ~ / .ssh / config ( obrigatório )
1.3 Insira o seguinte no arquivo:
Caso A: novo clone do Git
Use este comando para clonar Git:
Nota: Se desejar alterar o nome do host “pizza” de .ssh / config no futuro, vá para a pasta clonada Git, edite a linha de URL do arquivo .git / config (consulte o caso B)
Caso B: já tem pasta clone do Git
2.1 Vá para a pasta clonada e, em seguida, vá para a pasta .git
2.2 Editar arquivo de configuração
2.3 Atualize o URL de * antigo para novo :
fonte
Para mim, a única solução de trabalho era simplesmente adicionar isso no arquivo
~/.ssh/config
:your_ssh_key
está sem nenhuma extensão. Não use.pub
.fonte
No CentOS 6.5 executando o OpenSSH_5.3p1 e o OpenSSL 1.0.1e-fips, resolvi o problema renomeando meus arquivos-chave para que nenhum deles tivesse o nome padrão.
Meu diretório .ssh contém id_rsa_foo e id_rsa_bar, mas não id_rsa, etc.
fonte
-i
opção pode resultar em algo comono such identity: /home/embo/.ssh/id_rsa: No such file or directory
.Conforme mencionado em uma página de blog Atlassian , gere um arquivo de configuração dentro da pasta .ssh , incluindo o seguinte texto:
Em seguida, você pode simplesmente fazer o checkout com o domínio do sufixo e, nos projetos, você pode configurar os nomes dos autores, etc. localmente.
fonte
Aqui está a solução que usei inspirada na resposta de sajib-khan . A configuração padrão não está definida; é minha conta pessoal no GitLab e a outra especificada é minha conta corporativa . Aqui está o que eu fiz:
Gere a chave SSH
Edite a configuração SSH
Exclua as chaves SSH em cache
Teste-o!
Use-o!
Conta da empresa
Conta pessoal / padrão
Aqui está a fonte que eu usei.
fonte
Eu amo a abordagem para definir o seguinte no arquivo ~ / .ssh / config:
Em seu repositório, você pode criar um
.env
arquivo que contenha ossh
comando a ser usado:Se você usar, por exemplo, dotenv a variável de ambiente do ambiente será exportada automaticamente e , você poderá especificar a chave que deseja por projeto / diretório. A senha é solicitada apenas uma vez, pois é adicionada ao chaveiro.
Esta solução funciona perfeitamente com o Git e foi projetada para funcionar em um Mac (devido a
UseKeychain
).fonte
Você pode experimentar este pacote sshmulti npm para manter várias chaves SSH.
fonte