Pergunta

Eu ter clonado o meu repositório git através de ssh.Assim, cada vez que me comunico com a origem mestre empurrando ou puxando, eu precise reinserir a minha senha.Como posso configurar o git para que eu não precise digitar minha senha várias vezes?

Foi útil?

Solução

Tente ssh-add, você precisa ssh-agent para ser executando e mantendo a sua chave privada

(Ok, de responder à actualização da questão, a primeira execução ssh-keygen para gerar uma chave pública e privada como Jefromi explicou.Você coloca a chave pública no servidor.Você deve usar uma senha, se você não tiver o equivalente a uma senha de texto simples em sua chave privada.Mas quando o fizer, então você precisa de, por uma questão prática ssh-agent como explicado abaixo).

Você deseja executar ssh-agent no plano de fundo enquanto você fizer o login.Depois de fazer o login, a idéia é executar ssh-add uma vez e apenas uma vez, para dar o agente de sua senha, para descodificar a sua chave.Em seguida, o agente fica apenas na memória com a sua chave desbloqueado e carregado, pronto para usar cada vez que você ssh em algum lugar.

Todos os ssh-família comandos1 serão, de seguida, consulte o agente e, automaticamente, ser capaz de utilizar a sua chave privada.

Em OSX (err, macOS), O GNOME e o KDE, sistemas, ssh-agent geralmente é iniciado automaticamente para você.Eu vou passar os detalhes do caso, como eu, você também tem um Cygwin ou outro ambiente windows onde este certamente não é feito para você.

Comece por aqui: man ssh-agent.

Existem várias maneiras para executar automaticamente o agente.A página de manual explica, você pode executá-lo para que ele seja um pai de toda a sua sessão de login de outros processos.Dessa forma, as variáveis de ambiente que fornece automaticamente será em todas as suas conchas.Quando você (mais tarde) invocar ssh-add ou ssh ambos terão acesso ao agente, porque todas elas têm as variáveis de ambiente com a magia de soquete caminhos ou o que seja.

Como alternativa, você pode executar o agente como uma criança comum, salvar as configurações de ambiente em um arquivo, e fonte de arquivo em cada shell quando ele é iniciado.

Meu OSX e Ubuntu sistemas de automaticamente fazer o agente de iniciar a instalação, então tudo que eu tenho a fazer é executar ssh-add de uma só vez.Tente executar ssh-add e ver se funciona, se é assim, então você só precisa fazer isso uma vez por reiniciar.

Meu Cygwin sistema necessário é feito manualmente, então eu fiz isso no meu .profile e eu tenho .bashrc origem .profile:

. .agent > /dev/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
        ssh-agent > .agent
        . .agent > /dev/null
}

O .agent o arquivo é criado automaticamente pelo script;ele contém as definições de variáveis de ambiente e as exportações.Acima tenta para a fonte .agente de ficheiro e, em seguida, tenta ps(1) o agente.Se não funcionar, começa um agente e cria um novo arquivo do agente.Você também pode executar ssh-add e se ele falhar, inicie um agente.


1.E mesmo local e remoto sudo com o direito pam extensão.

Outras dicas

Tive um problema semelhante com o Github porque eu estava usando o protocolo HTTPS. Para verificar qual protocolo você está usando apenas correr

git config -l

e olhe para a linha começando com remote.origin.url. Para mudar seu protocolo

git config remote.origin.url git@github.com:your_username/your_project.git

Trata -se de configurar o SSH, não o Git. Se você ainda não o fez, você deve usar ssh-keygen (com uma senha em branco) para criar um par de chaves. Em seguida, você copia a chave pública para o destino remoto com ssh-copy-id. A menos que você precise de várias chaves (por exemplo, mais seguras com uma senha para outros fins) ou você tem algumas coisas realmente estranhas de múltiplas identidades acontecendo, é simples:

ssh-keygen   # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host

EDIT: Você realmente deve apenas ler a resposta do Digitalross, mas: se você usar chaves com sessões, precisará usar ssh-add <key-file> para adicioná -los a ssh-agent (e obviamente inicia um ssh-agent Se sua distribuição ainda não tiver uma em execução para você).

Certifique -se de que, ao clonar o repositório, você o fez com o URL SSH e não com os https; Na caixa URL do clone do repo, escolha o protocolo SSH antes de copiar o URL. Veja a imagem abaixo:

enter image description here

Se você clonou usando Https (recomendado) então:-

git config --global credential.helper cache

e depois

git config --global credential.helper 'cache --timeout=2592000'
  • Tempo limite = 2592000 (30 dias em segundos) para ativar o armazenamento em cache por 30 dias (ou o que você está suítes).

  • 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 nenhuma credenciais.

  • Para mais informações :- Armazenando em cache sua senha do github no git

Observação : Você precisa do Git 1.7.10 ou mais recente para usar o ajudante de credenciais. No reinício do sistema, talvez tenhamos que inserir a senha novamente.

Estendendo os pensamentos de Muein para aqueles que preferem editar arquivos diretamente em execução de comandos no Git-Bash ou Terminal.

Vá para o diretório .git do seu projeto (Project Root em sua máquina local) e abra o arquivo 'config'. Em seguida, procure [Remote "Origin"] e defina a configuração da URL da seguinte maneira:

[remote "origin"]
    #the address part will be different depending upon the service you're using github, bitbucket, unfuddle etc.
    url = git@github.com:<username>/<projectname>.git

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 em diferentes métodos, dependendo da configuração do SSHD).

Você pode evitar colocar essa senha usando certificados. Com certificados, você ainda precisa colocar uma senha, mas desta vez é a senha da sua chave privada (que é independente da senha da conta).

Para fazer isso, você pode seguir as instruções apontadas por Steveth45:

Com Autenticação pública -chave.

Se você deseja evitar colocar a senha do certificado toda vez que pode usar o SSH-Agent, conforme apontado pela Digitalross

A maneira exata da maneira que você faz isso depende do UNIX vs Windows, mas essencialmente você precisa executar o SSH-Agent em segundo plano quando você efetuar login e, na primeira vez em que você faz login, execute o ssh-add para dar ao agente sua senha. Todos os comandos da família SSH consultarão o agente e retomarão automaticamente sua senha.

Comece aqui: homem ssh-agent.

O único problema do ssh-agent é que, pelo menos no *nix, você deve colocar a senha de certificados em cada novo shell. E então o certificado está "carregado" e você pode usá -lo para autenticar contra um servidor SSH sem colocar nenhum tipo de senha. Mas isso está nessa concha específica.

Com chaveiro Você pode fazer a mesma coisa 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 seu PC.

Gnome tem um aplicativo semelhante, chamado Keyring gnomo Isso pede a senha do seu certificado na primeira vez em que você a usa e, em seguida, a armazena com segurança para que você não seja solicitado novamente.

Se você está usando o Github, eles têm um tutorial muito bom que explica mais claramente (pelo menos para mim).

http://help.github.com/setup-git-redirect/

ssh-keygen -t rsa

Quando solicitado uma senha, deixe -a em branco, ou seja, pressione Enter. tão simples como isso!!

Experimente isso da caixa de onde você está empurrando

    ssh git@github.com

Você deve obter uma resposta bem -vinda do Github e ficará bem em depois pressionar.

Eu tive que clonar um repositório Git de um servidor que não permitia a tecla Login Vie SSH, mas apenas com um usuário/senha. Não encontrei como configurar o plug-in Git para usar uma combinação simples de usuário/senha, então adicionei o seguinte comando Shell como etapa pré-construção em uma máquina de construção Linux, que depende da ferramenta esperar (instalação apt-get espera):

Esta não é uma boa maneira de resolver esse problema, pois sua senha é mostrada como texto claro na configuração e logs do trabalho Jenkins! Use-o apenas se não houver como configurar a autentificação RSA-Key ou outras possibilidades de configuração!

rm -rf $WORKSPACE &&
expect -c 'set timeout -1; spawn git clone USER@MYHOST:/MYPATH/MYREPO.git $WORKSPACE; expect "password:" {send "MYPASSWORD\r"}; expect eof'

Adicione uma única linha AddKeysToAgent yes na parte superior do arquivo .ssh/configuração. Claro que o ssh-agent deve estar funcionando com antecedência. Se não estiver funcionando (verifique por prep ssh-agent ), então basta executá -lo eval $(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 é https://askubuntu.com/questions/362280/enter-ssh-psphrase-onnce/853578#853578

Estou tentando evitar digitar a senha o tempo todo, porque estou usando o SSH no Windows. O que fiz foi modificar meu arquivo .profile, para que eu digite minha senha em uma sessão específica. Portanto, este é o pedaço de código:

    SSH_ENV="$HOME/.ssh/environment"

    # start the ssh-agent
    function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
        echo succeeded
        chmod 600 "$SSH_ENV"
        . "$SSH_ENV" > /dev/null
        ssh-add
    }

    # test for identities
    function test_identities {
        # test whether standard identities have been added to the agent already
        ssh-add -l | grep "The agent has no identities" > /dev/null
        if [ $? -eq 0 ]; then
            ssh-add
            # $SSH_AUTH_SOCK broken so we start a new proper agent
            if [ $? -eq 2 ];then
                start_agent
            fi
        fi
    }

    # check for running ssh-agent with proper $SSH_AGENT_PID
    if [ -n "$SSH_AGENT_PID" ]; then
        ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
        if [ $? -eq 0 ]; then
      test_identities
        fi
    # if $SSH_AGENT_PID is not properly set, we might be able to load one from
    # $SSH_ENV
    else
        if [ -f "$SSH_ENV" ]; then
      . "$SSH_ENV" > /dev/null
        fi
        ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
        if [ $? -eq 0 ]; then
            test_identities
        else
            start_agent
        fi
    fi

Então, com isso, digito minha senha uma vez em uma sessão.

Eu tentei todas essas sugestões e muito mais, apenas para poder dar um clone da minha instância da AWS. Nada funcionou. Finalmente trapaceei o desespero: copiei o conteúdo de id_rsa.pub na minha máquina local e a anexei a ~/.ssh/conhecida_hosts na minha instância da AWS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top