Eu sei como fornecer um nome de usuário e senha para uma solicitação HTTPS como esta:
git clone https://username:password@remote
Mas eu gostaria de saber como fornecer um nome de usuário e senha para o controle remoto assim:
git clone [email protected]
Eu tentei assim:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Mas eles não funcionaram.
Respostas:
Com base no comentário de Michael Scharf:
Você pode deixar de fora a senha para que ela não seja registrada no seu arquivo de histórico do Bash:
Ele solicitará sua senha.
Como alternativa, você pode usar:
Dessa forma, funcionou para mim a partir de um repositório GitHub.
fonte
git clone https://[email protected]/username/repository.git
. git irá pedir-lhe e ele não vai ser salvos em .git / config nem em seu histórico de festaO
user@host:path/to/repo
formato diz ao Git para usar ssh para fazer loginhost
com o nome de usuáriouser
. Degit help clone
:A parte anterior a
@
é o nome de usuário e o método de autenticação (senha, chave pública, etc.) é determinado pelo ssh, não pelo Git. O Git não tem como passar uma senha para o ssh, porque o ssh pode nem mesmo usar uma senha, dependendo da configuração do servidor remoto.Use
ssh-agent
para evitar digitar senhas o tempo todoSe você não deseja digitar sua senha ssh o tempo todo, a solução típica é gerar um par de chaves pública / privada , colocar a chave pública em seu
~/.ssh/authorized_keys
arquivo no servidor remoto e carregar sua chave privadassh-agent
. Veja também Configurando Git sobre SSH para acessar uma vez , a página de ajuda do GitHub em passphrases chave ssh , documentação ssh do gitolite e documentação chaves SSH do Heroku .Escolhendo entre várias contas no GitHub (ou Heroku ou ...)
Se você tiver várias contas em um local como o GitHub ou o Heroku, terá várias chaves ssh (pelo menos uma por conta). Para escolher em qual conta você deseja fazer login, você deve informar ao ssh qual chave privada usar .
Por exemplo, suponha que você tivesse duas contas do GitHub:
foo
ebar
. Sua chave ssh parafoo
is~/.ssh/foo_github_id
e sua chave ssh parabar
is~/.ssh/bar_github_id
. Você deseja acessar[email protected]:foo/foo.git
com suafoo
conta e[email protected]:bar/bar.git
com suabar
conta. Você adicionaria o seguinte ao seu~/.ssh/config
:Você então clonaria os dois repositórios da seguinte maneira:
Evitando o ssh completamente
Alguns serviços fornecem acesso HTTP como uma alternativa ao ssh:
GitHub:
Gitorious:
Heroku: Veja este artigo de suporte .
AVISO : Adicionar sua senha ao URL do clone fará com que o Git armazene sua senha de texto sem formatação
.git/config
. Para armazenar sua senha com segurança ao usar HTTP, use um auxiliar de credencial. Por exemplo:O procedimento acima fará com que o Git solicite sua senha a cada 15 minutos (por padrão). Veja
git help credentials
para detalhes.fonte
Nos comentários da resposta de @ Bassetassen , a @plosco mencionou que você pode usar o clit
git clone https://<token>@github.com/username/repository.git
do GitHub, no mínimo. Eu pensei em expandir como fazer isso, caso alguém se depare com essa resposta, como eu, enquanto tentava automatizar alguma clonagem.O GitHub tem um guia muito útil sobre como fazer isso, mas não cobre o que fazer se você quiser incluir tudo em uma linha para fins de automação. Ele avisa que a adição do token ao URL do clone o armazenará em texto sem formatação
.git/config
. Obviamente, isso representa um risco de segurança para quase todos os casos de uso, mas como pretendo excluir o repositório de repositório e revogar o token quando terminar, não me importo.1. Crie um token
O GitHub tem um guia completo aqui sobre como obter um token, mas aqui está o TL; DR.
2. Clone o repositório
Mesmo que o @plosco comando deu,
git clone https://<token>@github.com/<username>/<repository>.git
, basta substituir<token>
,<username>
e<repository>
com o que a sua informação é.Se você deseja cloná-lo em uma pasta específica, basta inserir o endereço da pasta no final da seguinte forma:
git clone https://<token>@github.com/<username>/<repository.git> <folder>
onde<folder>
está, você adivinhou, a pasta na qual cloná-lo! Pode, claro, usar.
,..
,~
, etc. aqui como você pode em outros lugares.3. Não deixe rastros
Nem tudo isso pode ser necessário, dependendo da sensibilidade do que você está fazendo.
rm -rf <folder>
.git remote remove origin
ou apenas removendo o token executandogit remote set-url origin https://github.com/<username>/<repository.git>
.Observe que eu não sou profissional, portanto, o exposto acima pode não estar seguro no sentido de que nenhum vestígio seria deixado para qualquer tipo de trabalho forense.
fonte
https://<token>@github.com
não foi aceito com meu portal, eu tive que usarhttps://oauth2:<token>@github.com
Embora existam muitas respostas, eu mesmo enfrento o problema repetido quando nome de usuário ou senha tem caracteres especiais.
O URL codifica seu nome de usuário e senha para o git e, em seguida, use-o como parte do próprio URL (quando não houver problemas de segurança).
Digamos, o valor codificado por URL do nome de usuário
e valor codificado por URL da senha
Em seguida, seu URL de clone do GIT ficaria assim:
Espero que isto ajude.
Por precaução, deseja codificar URL online: https://www.urlencoder.org/
fonte
Resolvi esse problema da seguinte maneira:
fonte
No Windows , as etapas a seguir devem disparar novamente a janela de login do GitHub ao
git clone
ing:fonte
Siga estes argumentos para substituir por seus casos especiais se eles estiverem criando um problema:
! # $ & '() * +, /:; =? @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Então, por exemplo
URL real: https: // usern @ me: p @ ssword @ git / reponame.git
URL da solução a ser usado: https: // usern% 40me: p%40ssword@git/reponame.git
fonte
Execute isso primeiro antes de clonar da mesma maneira, deve ser corrigido!
fonte
Essa é uma excelente pergunta sobre estouro de pilha e as respostas foram muito instrutivas, de modo que pude resolver um problema irritante que encontrei recentemente.
A organização em que trabalho utiliza o
Atlassian's BitBucket
produto (não o Github), essencialmente sua versão do GitHub, para que os repositórios possam ser completamente protegidos no local. Eu estava com um problema semelhante ao @coordinate, pois minha senha era necessária para um novo repositório que fiz check-out. Minhas credenciais foram salvas globalmente para todos osBitBucket
projetos, por isso não sei o que levou à perda de credenciais.Resumindo, consegui inserir o seguinte comando GIT (fornecendo apenas meu nome de usuário), que solicitou ao Gerenciador de credenciais do Git que me solicitasse a senha, que eu poderia salvar.
NOTA: os subcaminhos do diretório entre parênteses simplesmente se referem a referências internas e variam para você!
fonte
Se você estiver usando
http/https
e pretendendo AUTOMATIZAR TOTALMENTE o processo sem exigir nenhuma entrada ou solicitação do usuário (por exemplo: dentro de um pipeline de CI / CD), poderá usar a seguinte abordagemgit credential.helper
onde você pode optar por definir a
ALICE_GITHUB_PASSWORD
variável de ambiente a partir de um comando shell anterior ou de sua configuração de pipeline, etc.Lembre-se de que o git-credential-helper baseado em "store" armazena senhas e valores em texto sem formatação. Portanto, verifique se o seu token / senha tem permissões muito limitadas.
Agora basta usar https: //[email protected]/my_repo.git sempre que seu sistema automatizado precisar buscar o repositório - ele usará as credenciais para
alice
ingithub.com
como armazenadas pelo git-credential-helper.fonte