Eu clonei meu repositório git sobre ssh. Portanto, toda vez que eu me comunico com o mestre de origem pressionando ou puxando, preciso redigitar minha senha. Como posso configurar o git para não precisar digitar minha senha várias vezes?
195
Respostas:
Tente
ssh-add
, você precisassh-agent
estar executando e mantendo sua chave privada(Ok, respondendo à pergunta atualizada, você primeiro executa
ssh-keygen
a geração de uma chave pública e privada, como Jefromi explicou . Você coloca a chave pública no servidor. Você deve usar uma senha, se não tiver o equivalente a uma planilha simples. senha de texto em sua chave privada. Mas, quando o fizer, você precisará, na prática,ssh-agent
conforme explicado abaixo.)Você deseja executar
ssh-agent
em segundo plano enquanto faz login. Depois de fazer login, a idéia é executarssh-add
uma e apenas uma vez, a fim de fornecer sua senha ao agente e decodificar sua chave. O agente fica na memória com a chave desbloqueada e carregada, pronta para ser usada sempre que você fizer uma busca em algum lugar.Todos os comandos da família ssh 1 consultarão o agente e poderão usar automaticamente sua chave privada.
Nos sistemas OSX (err, macOS ), GNOME e KDE,
ssh-agent
geralmente é iniciado automaticamente para você. Analisarei os detalhes caso, como eu, você também tenha um Cygwin ou outro ambiente Windows, onde isso certamente não seja feito para você.Comece por aqui:
man ssh-agent
.Existem várias maneiras de executar automaticamente o agente. Como a página de manual explica, você pode executá-lo para que ele seja o pai de todos os outros processos da sua sessão de login. Dessa forma, as variáveis de ambiente que ele fornece estarão automaticamente em todos os seus shells. Quando você (mais tarde) chamar
ssh-add
oussh
ambos terão acesso ao agente porque todos eles têm as variáveis de ambiente com nomes de caminhos de soquete mágicos ou o que for.Como alternativa, você pode executar o agente como um filho comum, salvar as configurações do ambiente em um arquivo e originar esse arquivo em todos os shell quando for iniciado.
Meus sistemas OSX e Ubuntu executam automaticamente a instalação do agente, então tudo o que preciso fazer é executar
ssh-add
uma vez. Tente executarssh-add
e veja se funciona, se for o caso, basta fazer isso uma vez por reinicialização.Meu sistema Cygwin precisava ser feito manualmente, então fiz isso no meu
.profile
e tenho.bashrc
fonte.profile
:O
.agent
arquivo é criado automaticamente pelo script; Ele contém as definições e exportações de variáveis de ambiente. O acima tenta originar o arquivo .agent e tentaps(1)
o agente. Se não funcionar, inicia um agente e cria um novo arquivo de agente. Você também pode simplesmente executarssh-add
e, se falhar, iniciar um agente.1. E até local e remoto
sudo
com a extensão pam certa.fonte
ssh-agent
é provavelmente mais limpa ao uso:eval `ssh-agent`
Tive um problema semelhante com o GitHub porque estava usando o protocolo HTTPS. Para verificar qual protocolo você está usando, basta executar
e olhe para a linha que começa com
remote.origin.url
. Para mudar seu protocolofonte
Permission denied
erro.git remote set-url origin [email protected]:your_username/your_project.git
Trata-se de configurar o ssh, não o git. Se você ainda não o fez, use
ssh-keygen
(com uma senha em branco) para criar um par de chaves. Em seguida, copie a chave pública para o destino remoto comssh-copy-id
. A menos que você precise de várias chaves (por exemplo, uma mais segura com uma senha para outros fins) ou se você tem coisas muito estranhas de identidade múltipla, isso é simples:Edit: Você realmente deve apenas ler a resposta do DigitalRoss, mas: se você usar chaves com frases secretas, precisará usá
ssh-add <key-file>
-las para adicioná-lasssh-agent
(e obviamente iniciar umassh-agent
se sua distribuição ainda não tiver uma em execução).fonte
ssh-agent
pois ele deseja ignorar o problema de inserir a senha sempre. Não downvoting mas eu acho que você precisa para melhorar esta resposta, a menos que eu sou o único que mal entendido ...ssh-agent
. +1 para você!ssh-*
chama a senha necessária para usar a chave - onde você realmente quis dizer sua senha de usuário real no controle remoto?Certifique-se de que quando você clonou o repositório, fez isso com o URL SSH e não o HTTPS; na caixa URL do clone do repositório, escolha o protocolo SSH antes de copiar o URL. Veja a imagem abaixo:
fonte
Se você clonou usando HTTPS (recomendado), então: -
e depois
timeout = 2592000 (30 dias em segundos) para ativar o cache por 30 dias (ou o que for necessário).
Agora execute um comando git simples que requer seu nome de usuário e senha.
Digite suas credenciais uma vez e agora o cache está ativado por 30 dias.
Tente novamente com qualquer comando git e agora você não precisa de credenciais.
Para obter mais informações: - Armazenando em cache sua senha do GitHub no Git
Nota : Você precisa do Git 1.7.10 ou mais recente para usar o auxiliar de credencial. Na reinicialização do sistema, talvez seja necessário inserir a senha novamente.
fonte
Estendendo os pensamentos de Muein para aqueles que preferem editar arquivos diretamente sobre a execução de comandos no git-bash ou no terminal.
Vá para o diretório .git do seu projeto (raiz do projeto na sua máquina local) e abra o arquivo 'config'. Em seguida, procure por [origem "remota"] e defina a configuração da URL da seguinte maneira:
fonte
Eu acho que há duas coisas diferentes aqui. O primeiro é que a autenticação SSH normal exige que o usuário coloque a senha da conta (onde a senha da conta será autenticada com diferentes métodos, dependendo da configuração do sshd).
Você pode evitar colocar essa senha usando certificados. Com os certificados, você ainda precisa inserir uma senha, mas desta vez é a senha da sua chave privada (independente da senha da conta).
Para fazer isso, você pode seguir as instruções indicadas por steveth45:
Se você quiser evitar colocar a senha do certificado todas as vezes, poderá usar o ssh-agent, como apontado pelo DigitalRoss
O único problema do ssh-agent é que, pelo menos no * nix, você deve colocar a senha dos certificados em cada novo shell. E o certificado é "carregado" e você pode usá-lo para se autenticar em um servidor ssh sem colocar nenhum tipo de senha. Mas isso é nesse shell em particular.
Com o chaveiro, você pode fazer o mesmo que o ssh-agent, mas "em todo o sistema". Depois de ligar o computador, você abre um shell e coloca a senha do certificado. E então, todos os outros shell usarão esse certificado "carregado" e sua senha nunca será solicitada novamente até que você reinicie o seu PC.
O Gnome tem um aplicativo semelhante, chamado Gnome Keyring, que solicita a senha do seu certificado na primeira vez em que você o utiliza e, em seguida, armazena-o com segurança para que você não seja solicitado novamente.
fonte
AddKeysToAgent yes
em .ssh / config. Em seguida, ele é carregado na memória até você desligar o computadorSe você estiver usando o github, eles têm um tutorial muito bom que explica mais claramente (pelo menos para mim).
http://help.github.com/set-up-git-redirect/
fonte
Quando for solicitada uma senha, deixe em branco, ou seja, pressione enter. tão simples como isso!!
fonte
Tente isso na caixa da qual você está empurrando
Você deve receber uma resposta bem-vinda do github e será bom empurrá-lo.
fonte
Hi gkucmierz! You've successfully authenticated, but GitHub does not provide shell access.
Mas de alguma forma ainda git me pedir a senha quando eu tentar empurrarEu tive que clonar um repositório git de um servidor que não permitia o login vie ssh key, mas apenas com um usuário / senha. Não encontrei nenhuma maneira de configurar o plug-in Git para usar uma combinação simples de usuário / senha, então adicionei o seguinte comando shell como etapa de pré-construção em uma máquina de compilação linux que depende da ferramenta esperada (apt-get install expect):
ESTE NÃO É UM BOM MODO DE RESOLVER ESTE PROBLEMA, COMO SUA SENHA É APRESENTADA COMO TEXTO CLARO NA CONFIGURAÇÃO E NO LOGS DO TRABALHO DE JENKINS! USE-O SOMENTE SE NÃO EXISTE MANEIRA DE CONFIGURAR A AUTENTIFICAÇÃO RSA-KEY OU OUTRAS POSSIBILIDADES DE CONFIGURAÇÃO!
fonte
Adicione uma única linha
AddKeysToAgent yes
na parte superior do arquivo .ssh / config. É claro que o ssh-agent deve estar executando antecipadamente. Se não estiver em execução (verifique porprep ssh-agent
), basta executá-loeval $(ssh-agent)
Agora, a chave é carregada em todo o sistema na memória e você não precisa digitar a senha novamente.
A fonte da solução é /ubuntu/362280/enter-ssh-passphrase-once/853578#853578
fonte
Eu estou tentando evitar digitar a senha o tempo todo também porque estou usando o ssh no windows. O que fiz foi modificar meu arquivo .profile, para inserir minha senha em uma sessão específica. Portanto, este é o trecho de código:
então com isso eu digito minha senha uma vez em uma sessão ..
fonte
Tentei todas essas sugestões e muito mais, apenas para poder clonar minha instância da AWS. Nada funcionou. Finalmente saí do desespero: copiei o conteúdo do id_rsa.pub na minha máquina local e o anexei a ~ / .ssh / known_hosts na minha instância da AWS.
fonte