我知道如何为https请求提供用户名和密码,如下所示:
git clone https://username:password@remote
但我想知道如何为遥控器提供用户名和密码,如下所示:
git clone git@remote.git
我试过这样的:
git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password
但他们没有奏效 .
6 回答
这种方式对我来说是一个github存储库
Edit based on Michael_Scharf's comment:
您可以省略密码,以便不会记录您的bash历史文件:
它会提示您输入密码
在@Bassetassen的answer的评论中,@ plosco提到你至少可以使用
git clone https://<token>@github.com/username/repository.git
从GitHub克隆 . 我想我会扩展如何做到这一点,以防任何人遇到这样的答案,就像我在尝试自动化克隆时所做的那样 .GitHub有一个关于如何执行此操作的very handy指南,但如果您想将其全部包含在一行中以用于自动化目的,则不会介绍该怎么做 . 它警告 adding the token to the clone URL will store it in plaintext in
.git/config
. 这显然是几乎每个用例的安全风险,但因为我计划在我关注时删除repo并撤销令牌 .1.创建令牌
GitHub有一个关于如何获得令牌的whole guide here,但这里是TL; DR .
转到设置>开发人员设置>个人访问令牌(here's a direct link)
单击"Generate a New Token"并再次输入密码 . (h ere's another direct link)
为其设置描述/名称,检查"repo"权限并点击页面底部的"Generate token"按钮 .
复制新令牌 before you leave the page
2.克隆回购
与@plosco给出的命令相同,
git clone https://<token>@github.com/<username>/<repository>.git
,只需用您的信息替换<token>
,<username>
和<repository>
.如果你想将它克隆到一个特定的文件夹,只需在最后插入文件夹地址,如下所示:
git clone https://<token>@github.com/<username>/<repository.git> <folder>
,你猜对了<folder>
,将它克隆到的文件夹!您当然可以像其他地方一样使用.
,..
,~
等 .3.不留痕迹
并非所有这些都是必要的,这取决于你所做的事情的敏感程度 .
如果你有一段时间无意使用它,你可能不想留下那个令牌,所以回到tokens page然后点击旁边的删除按钮 .
如果您不再需要回购,请将其删除
rm -rf <folder>
.如果确实需要再次使用repo,但不需要再次自动执行,可以通过执行
git remote remove origin
删除远程,或者只需通过运行git remote set-url origin https://github.com/<username>/<repository.git>
删除令牌 .清除bash历史记录以确保令牌不会保留在那里 . 有很多方法可以做到这一点,请参阅this question和this question . 但是,可能更容易将前面的所有命令添加到空格中,以防止它们被存储开始 .
请注意,我不是专业人士,所以上述可能并不安全,因为任何法医工作都不会留下任何痕迹 .
我通过以下方式解决了这个问题:
On Windows ,以下步骤应在
git clone
ing时重新触发GitHub登录窗口:"Credential Manager"的搜索开始菜单
选择"Windows Credentials"
删除与Git或GitHub相关的所有凭据
在克隆之前先运行此方法,应该修复!
user@host:path/to/repo
格式告诉Git使用ssh以用户名user
登录host
. 来自git help clone:@
之前的部分是用户名,身份验证方法(密码,公钥等)由ssh确定,而不是Git . Git无法将密码传递给ssh,因为ssh甚至可能根本不使用密码,具体取决于远程服务器的配置 .使用ssh-agent以避免始终键入密码
如果您不想一直输入ssh密码,典型的解决方案是generate a public/private key pair,将公钥放在远程服务器上的~/.ssh/authorized_keys file中,并将私钥加载到ssh-agent中 . 另请参见Configuring Git over SSH to login once,GitHub's help page on ssh key passphrases,gitolite's ssh documentation和Heroku's ssh keys documentation .
在GitHub(或Heroku或......)的多个帐户之间进行选择
如果您在GitHub或Heroku这样的地方有多个帐户,您将拥有多个ssh密钥(每个帐户至少有一个) . 要选择您要登录的帐户,您必须tell ssh which private key to use .
例如,假设您有两个GitHub帐户:
foo
和bar
. 您的foo
的ssh键是~/.ssh/foo_github_id
,bar
的ssh键是~/.ssh/bar_github_id
. 您想要使用foo
帐户访问git@github.com:foo/foo.git
,使用bar
帐户访问git@github.com:bar/bar.git
. 您可以将以下内容添加到~/.ssh/config
:然后,您将按如下方式克隆这两个存储库:
完全避免使用ssh
有些服务提供HTTP访问作为ssh的替代方法:
WARNING :添加您的克隆URL密码将导致Git将您的明文密码存储在
.git/config
中 . 要在使用HTTP时安全地存储密码,请使用凭证帮助程序 . 例如:以上情况会导致Git每15分钟(默认情况下)要求输入一次密码 . 有关详细信息,请参阅git help credentials .