我在Windows上.我安装了git和posh-git(Windows PowerShell的一些助手).我可以添加密钥,ssh-add并可以使用github和我的网络服务器进行身份验证.我也可以使用PowerShell中的git与我的存储库进行交互.
但有一件事我不能做:我使用git-plus作为Atom编辑器.我不会把它推到我的回购.我的问题是什么?
好的,奇怪的问题.我有与Vagrant一起工作的SSH转发.但是当我使用Ansible作为Vagrant配置器时,我正试图让它工作.
我确切地发现了Ansible正在执行的操作,并且自己从命令行尝试了它,当然,它也在那里失败了.
[/common/picsolve-ansible/u12.04%]ssh -o HostName=127.0.0.1 \
-o User=vagrant -o Port=2222 -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no -o PasswordAuthentication=no \
-o IdentityFile=/Users/bryanhunt/.vagrant.d/insecure_private_key \
-o IdentitiesOnly=yes -o LogLevel=FATAL \
-o ForwardAgent=yes "/bin/sh \
-c 'git clone git@bitbucket.org:bryan_picsolve/poc_docker.git /home/vagrant/poc_docker' "
Permission denied (publickey,password).
Run Code Online (Sandbox Code Playgroud)
但是,当我只运行vagrant ssh时,代理转发工作正常,我可以检查R/W我的github项目.
[/common/picsolve-ansible/u12.04%]vagrant ssh
vagrant@vagrant-ubuntu-precise-64:~$ /bin/sh -c 'git clone git@bitbucket.org:bryan_picsolve/poc_docker.git /home/vagrant/poc_docker'
Cloning into '/home/vagrant/poc_docker'...
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 18 (delta 4), reused 0 (delta 0)
Receiving objects: 100% (18/18), done.
Resolving deltas: …Run Code Online (Sandbox Code Playgroud) 我正在尝试添加密钥ssh-agent并希望ssh-add从文件中读取密码.怎么可能?
如何从shell脚本自动执行此过程?
在阅读https://superuser.com/a/230872/301446后,我已经能够设置ssh-agent的共享以进行公钥验证
由此生成的环境文件具有以下内容:
SSH_AUTH_SOCK=/tmp/ssh-OwqeSuxmEsQN/agent.4744; export SSH_AUTH_SOCK;
SSH_AGENT_PID=8960; export SSH_AGENT_PID;
#echo Agent pid 8960;
Run Code Online (Sandbox Code Playgroud)
并agent.4744有:
!<socket >24194 s 07DF88C6-E9997283-4C471010-2FE57D77
Run Code Online (Sandbox Code Playgroud)
你知道ssh-agent如何使用这个套接字吗?我可以理解ssh-agent使用它来共享身份验证信息但具体如何?
我使用 WSL 运行 Windows 10。我在一台计算机上有所需的行为,但无法在其他地方复制。这是我所追求的:
我尝试过的事情:
eval $(ssh-agent), 后跟ssh-add; 它会记住密码,但如果我把它放在我的~/.bash_profile那么它会提示我输入每个新的控制台窗口,并且我打开了很多 - 其中许多我没有使用 git。git config --global credential.helper为cache或storebash.exe和wsl.exe得到git-credentials-manager.exe工作这是我放入我的内容的示例 ~/.gitconfig:
[credential]
helper = "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
我已经安装了git credential manager从这里并且还尝试了主要的 Git For Windows 安装作为替代。
我怎样才能鼓励它记住我的密码?
ssh-add -l 显示我有3个RSA密钥添加到我的SSH代理.
ssh-add -L 显示那些公钥.
如何获取私钥,以便将其保存到文件中?或者这是不可能的?它是如何工作的呢?
是否可以要求ssh-agent使用私钥进行操作?我怎么能让它为我加密/解密一个号码?
我必须为此编写代码(编程语言并不重要),但我更喜欢使用现有工具或库.
我已经开始使用ssh-agent了:
$ ssh-agent.exe
SSH_AUTH_SOCK=/tmp/ssh-LagrQoD3JRqg/agent.3600; export SSH_AUTH_SOCK;
SSH_AGENT_PID=7784; export SSH_AGENT_PID;
echo Agent pid 7784;
Run Code Online (Sandbox Code Playgroud)
接下来我尝试添加一个键:
$ ssh-add /cygdrive/h/mykey.pem
Run Code Online (Sandbox Code Playgroud)
我得到的回应是:
Could not open a connection to your authentication agent.
Run Code Online (Sandbox Code Playgroud) 我一生都无法弄清楚为什么我的 SSH 配置转发了错误的密钥。我有两把钥匙,我们称它们为home_rsa和work_rsa。我做了以下事情:
eval `ssh-agent`\nssh-add -K ~/.ssh/home_rsa\nssh-add -K ~/.ssh/work_rsa\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的~/.ssh/config文件:
Host home\n ForwardAgent yes\n HostName home.com\n IdentityFile ~/.ssh/home_rsa\n IdentitiesOnly yes\n User home\n\nHost work\n ForwardAgent yes\n HostName work.com\n IdentitiesOnly yes\n IdentityFile ~/.ssh/work_rsa\n User work\n\nHost bitbucket\n IdentityFile ~/.ssh/home_rsa\n\nHost bitbucket-work\n IdentityFile ~/.ssh/work_rsa\n\nHost bitbucket*\n HostName bitbucket.com\n User git\nRun Code Online (Sandbox Code Playgroud)\n\n当我运行以下\xe2\x80\xa6时
\n\nssh work\nssh git@bitbucket.org\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6Bitbucket 报告我正在使用我的home用户,尽管我已经清楚地登录到我的work服务器并且应该转发我的work密钥。如果我以相反的顺序添加 SSH 身份并运行上面相同的代码,Bitbucket 会报告我正在使用我的work用户。ssh-add -l从我的服务器运行work,我看到两个 SSH 密钥都被转发,但这不是 …
我正在尝试使用Capistrano部署项目.我的开发机器正在运行Windows 7; 我正在部署的服务器是Linux.
在deploy.rb脚本中,设置以下内容:
ssh_options[:forward_agent] = true
Run Code Online (Sandbox Code Playgroud)
Capistrano脚本从本地运行git命令开始,此时我被提示输入SSH密钥的密码:
* executing `deploy:update_code'
executing locally: "git ls-remote git@github.com:pathto/gitproject.git develop"
Enter passphrase for key '/c/Users/Sam/.ssh/id_rsa':
command finished in 6999ms
Run Code Online (Sandbox Code Playgroud)
(我可能已经从中看到了真正的git路径.)
我输入我的密码,这很好用.然而,Capistrano然后尝试在远程机器上做类似的事情(在下面重命名为staging-server.com)并且我得到一个错误 - 请参阅此提取的最后一行:
[staging-server.com] executing command
[staging-server.com] sh -c 'git clone git@github.com:pathto/gitproject.git /home/perstest/releases/20120412074500 && cd
/home/perstest/releases/20120412074500 && git checkout -b deploy 50eaf06d06d66fd20c3e55038276f420d8c308a8 && (echo 50eaf06d06d66fd20c3e55038
276f420d8c308a8 > /home/perstest/releases/20120412074500/REVISION)'
** [staging-server.com :: out] Initialized empty Git repository in /home/perstest/releases/20120412074500/.git/
** [staging-server.com :: err] Error reading response length from authentication socket.
Run Code Online (Sandbox Code Playgroud)
如果我在deploy.rb中注释掉forward_agent行,则此安装成功,可能是使用部署服务器本身的密钥.
我的SSH密钥似乎正在工作 - 毕竟,最初的git命令工作,我可以在git …
我想推送一个远程git存储库.我输了三次错误的密码短语.我创建了一个新的ssh密钥,并在存储库服务器上注册了新的公钥.但是ssh代理不会提示输入密码.它一直在告诉我:
权限被拒绝(publickey).致命:无法从远程存储库读取.
请确保您具有正确的访问权限并且存储库存在.
如何在ubuntu下解决这个问题?
编辑
正如有人建议的那样,我试过了 ssh-add
sadik@sadix:~$ cd .ssh/
sadik@sadix:~/.ssh$ ls
config github_rsa github_rsa.pub id_rsa id_rsa.pub keys.zip known_hosts
sadik@sadix:~/.ssh$ ssh-add
Enter passphrase for /home/sadik/.ssh/id_rsa:
Identity added: /home/sadik/.ssh/id_rsa (/home/sadik/.ssh/id_rsa)
sadik@sadix:~/.ssh$
sadik@sadix:~/.ssh$ cd
sadik@sadix:~$ cd some/git-repo/
sadik@sadix:~/some/git-repo/$ git push -u bitbucket master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
我应该补充说,这个git存储库已经从github克隆(不属于我).我想在bitbucket上的私有存储库上推送它.我不知道这是否会导致权限问题,但我的第一个问题是ssh没有提示密码短语.即使重启或注销后也是如此.
编辑
正如Jakuje亲切地建议我输入命令GIT_SSH_COMMAND="ssh -vvv" git push -u bitbucket master来获取客户端日志.这是输出的结束:
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup …Run Code Online (Sandbox Code Playgroud) ssh-agent ×10
ssh ×7
git ×3
ansible ×1
atom-editor ×1
capistrano ×1
cygwin ×1
encryption ×1
git-bash ×1
powershell ×1
sockets ×1
vagrant ×1