git - mac - update ssh key
Chave SSH-Ainda pedindo senha e senha (15)
Eu tenho sido um pouco 'colocando' com o Github sempre pedindo meu nome de usuário e senha quando eu clonar um repositório. Eu quero ignorar este passo porque é um aborrecimento dentro do meu fluxo de trabalho.
Eu tentei configurar uma chave SSH (que eu fiz com sucesso) usando este guia. https://help.github.com/articles/generating-ssh-keys e eu tive sucesso.
Meu problema é que ainda me pedem minha senha e senha do github ao clonar um repositório (usando SSH). Meu entendimento foi que depois de configurar essa chave SSH, eu não teria mais que fazer isso.
Estou um pouco inseguro sobre o que perguntar, então vou apenas declarar meu objetivo.
Eu quero ser capaz de clonar repositórios sem ter que colocar informações no meu Github o tempo todo .
O que estou perdendo com minha chave SSH? Se alguém puder fornecer algumas orientações ou recursos, eu agradeceria, porque sempre me senti um pouco perdido quando se tratava de autenticação SSH no GitHub.
De meu conhecimento, este é um comando que testa se as coisas estão funcionando corretamente, aqui estão as saídas do meu console:
~ $ ssh -T [email protected]
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.
Quando eu insiro minha senha, isso deve falhar primeiro? Então, quando eu entro na minha senha, ela passa.
Adicionar identidade sem chave
Pode haver momentos em que você não quer que a frase secreta seja armazenada no chaveiro, mas não quer ter que digitar a senha repetidamente.
Você pode fazer isso assim:
ssh-add ~/.ssh/id_rsa
Isso lhe pedirá a frase secreta, insira-a e ela não perguntará novamente até você reiniciar.
Adicionar identidade usando chaveiro
Como o @dennis aponta nos comentários, para persistir a senha através de reinicializações armazenando-a no seu chaveiro, você pode usar a opção -K
( -k
para o Ubuntu) ao adicionar a identidade assim:
ssh-add -K ~/.ssh/id_rsa
Mais uma vez, isso lhe pedirá a frase secreta, insira-a e, desta vez, ela nunca mais pedirá essa identidade.
Basta executar o seguinte comando:
ssh-add -K
Nunca pedirá que você insira a senha novamente.
Esta resposta funcionou para mim no Ubuntu
.
Veja este doc do GitHub para converter o URL do controle remoto de https para ssh. https://help.github.com/articles/changing-a-remote-s-url/
Para verificar se o URL do remote é ssh ou https, use git remote -v
.
Para mudar de https para ssh:
git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
Eu gostaria de adicionar uma resposta para aqueles que ainda precisam digitar a senha porque eles configuraram IdentitiesOnly como sim. Isso pode causar várias chaves e o arquivo de identidade, sendo chaves para git ou servidor.
Depois de gerar a chave e copiá-la para o servidor:
ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub [email protected]
Eu achei que não funcionou.
Então fui checar o ~/.ssh/config
, vi isso no final:
Host *
IdentitiesOnly yes
Então eu adiciono isso acima:
Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server
Eu posso apenas entrar digitando ssh 12gpu
.
Então você pode adicionar várias chaves ssh usando seus nomes favoritos, e você só precisa adicionar as configurações como as quatro linhas acima no arquivo de configuração.
Host é o nome que você gostaria de inserir quando se conecta ao servidor mais tarde; o HostName é o ip ou domínio do servidor, como github.com; Usuário é o nome de usuário que você loga no servidor como o nome de usuário ou git para github ou gitlab; e o IdentityFile é o arquivo onde você armazena a chave que você gerou.
Eu tentei todas as respostas aqui e nenhuma dessas respostas funcionou ! Minha senha não persistiria entre as sessões / reinicializações do meu Mac.
O que eu descobri ao ler github.com/lionheart/openradar-mirror/issues/15361 e esta discussão no Twitter foi que a Apple propositalmente mudou o comportamento do ssh-agent no macOS 10.12 Sierra para não carregar mais automaticamente as chaves SSH anteriores. Para manter o mesmo comportamento de El Cap, fiz o seguinte:
-
ssh-add -K ~/.ssh/id_rsa
Nota: mude o caminho para onde sua chave id_rsa está localizada. -
ssh-add -A
Crie (ou edite se existir) o seguinte
~/.ssh/config
:Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
E agora minha senha é lembrada entre reinicializações do meu Mac!
Eu tive que executar:
eval `ssh-agent -s`
ssh-add
Nota : Você terá que fazer isso novamente após cada reinicialização.
Solução encontrada here .
Mobaxterme tinha uma interface de interface do usuário para isso
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
No Mac OSX, você pode adicionar sua chave privada ao chaveiro usando o comando:
ssh-add -K /path/to/private_key
Se sua chave privada é armazenada em ~ / .ssh e é chamada id_rsa:
ssh-add -K ~/.ssh/id_rsa
Você será solicitado a fornecer sua senha, que será armazenada no seu chaveiro.
Editar - Lidar com reinicialização
Para não ter que preencher sua senha, mesmo depois de um reinício, adicione o seguinte ao seu arquivo de configuração ssh (comumente localizado em ~ / .ssh / config)
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
O problema parece ser porque você está clonando a partir do HTTPS e não do SSH. Eu tentei todas as outras soluções aqui, mas ainda estava com problemas. Isso fez isso por mim.
Usando o osxkeychain helper
da osxkeychain helper
forma:
Descubra se você tem instalado.
git credential-osxkeychain
Se não estiver instalado, você será solicitado a fazer o download como parte das Ferramentas de Linha de Comando do Xcode.
Se estiver instalado, diga ao Git para usar o
osxkeychain helper
usando a configuração globalcredential.helper
:git config --global credential.helper osxkeychain
Na próxima vez que você clonar uma URL HTTPS, você será solicitado a fornecer o nome de usuário / senha e conceder acesso à chave da OSX. Depois de fazer isso pela primeira vez, ele deve ser salvo no seu chaveiro e você não precisará digitá-lo novamente.
Para o Mac OSX Sierra, descobri que as correções sugeridas no problema do github para o Open Radar corrigiram meu problema. Parece que a Sierra mudou o comportamento padrão (comecei a ter esse problema após a atualização).
Este eu encontrei especialmente útil: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061
ssh-add -A
Isso resultou na minha identidade sendo adicionada ao agente, depois que eu corri
ssh-add -K {/path/to/key}
Para resumir, no OSX.12:
ssh-add -K {/path/to/key}
ssh-add -A
deve resultar em:
Identity added: {/path/to/file} ({/path/to/file})
EDIT: notei que da próxima vez que eu fiz uma reinicialização completa (aka o agente parou e reiniciado) isso não funcionou mais. A solução mais completa é o que @ChrisJF mencionou acima: criando um ~/.ssh/config
. Aqui está a saída da minha:
$ cat ~/.ssh/config
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Você pode adicionar quantas entradas do IdentityFile
forem necessárias, mas essa é a configuração padrão. Esta é a resposta "tendência" no link openradar acima, ATM, também.
Se você estiver usando o Windows e o GIT sem ferramentas de terceiros e sua chave não estiver protegida por uma senha / frase-senha, use isto:
- A variável de ambiente HOME deve ser definida para o seu perfil de usuário (por exemplo, C: \ Users \ Laptop)
- Vá para a pasta C: \ Users \ Laptop \ .ssh \ e edite o arquivo "config" (ou crie o arquivo!) Exemplo: C: \ Users \ Laptop.ssh \ config (observação: não há nenhum. No final!)
Adicione seu host git-server ao arquivo "config" da seguinte forma:
#Example host entry Host myhostname.com HostName myhostname.com User git IdentityFile c:/users/laptop/.ssh/id_rsa.pub PasswordAuthentication no Port 422
Salve o arquivo e clone o repositório assim:
git clone ssh: //meuhostname.com/git-server/repos/picalc.git
Você pode usar parâmetros de configuração adicionais para a entrada de host do arquivo "config". Estes podem ser encontrados em sua pasta de instalação local do git, por exemplo, " C: \ Arquivos de Programas \ Git \ etc \ ssh \ ssh_config ". Excerto:
# Host *
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Cipher 3des
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
Se você estiver usando ssh url para git, quando for solicitada a senha para ssh, coloque o nome de usuário como " git " e a senha como a senha de login do seu sistema
Tente o ssh-agent
como está explicado lá: https://help.github.com/articles/working-with-ssh-key-passphrases
Trabalhou no LinuxMint / Ubuntu
Siga os seguintes passos
Passo 1:
Ir para arquivo => /.ssh/config
Salve as linhas abaixo no arquivo
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile /home/apple/myssh-privatekey
AddKeysToAgent yes
Não esqueça de adicionar esta linha AddKeysToAgent yes
Passo 2:
Abra o terminal e adicione o conjunto de chaves ao ssh-add
$ ssh-add -k /home/apple/myssh-privatekey
fornecer a senha.
Você pode remover a frase secreta da chave
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ou você pode correr
$ ssh-keygen -p
você recebe um aviso para o arquivo de chaves. Por padrão, é ~/.ssh/id_rsa
então pressione enter
Você será solicitado a inserir a senha atual.
Em seguida, haverá um prompt para nova frase secreta, pressione enter