2017-03-17 144 views
0

我有一個Bitbucket回購,我可以通過HTTPS進行推送和推送。 現在,我正在嘗試將HTTPS更改爲SSH。無法通過SSH

我在本地創建了一個SSH密鑰對,並且已將公鑰添加到Bitbucket。

我已經設置了遠程方式如下:

git remote set-url origin [email protected]:7999/my-project.git 

然後,當我做git pull我要求我的密碼三次,然後我拒絕的權限:

Password: 
Password: 
Password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,keyboard-interactive). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

我有兩個問題:

1.爲什麼我要求我的密碼,如果我使用SSH?(並且我沒有在創建SSH密鑰時設置密碼)

2.爲什麼我不能連接到服務器?

+0

你需要告訴ssh使用你的私鑰作爲身份。不確定在Windows上如何工作;在Linux上可以使用'ssh-agent'或者編輯ssh配置文件來設置'IdentityFile'的值。見[更多這裏](http://stackoverflow.com/questions/4565700/specify-private-ssh-key-to-use-when-executing-shell-command-with-or-without-ruby) – mustaccio

+0

https:/ /stackoverflow.com/questions/1558719/using-a-remote-repository-with-non-standard-port –

+0

7999應該是端口號還是路徑? –

回答

0

該URL在標準端口22上被解析爲SSH,路徑爲7999.端口22上的SSH服務器很可能不會授權您的git公鑰。

The syntax is

[[email protected]]host.xz:path/to/repo.git/ 

注意,有沒有空間的端口。

完整的SSH語法

ssh://[[email protected]]host.xz[:port]/path/to/repo.git/ 

這應該允許您連接到正確的SSH端口。

我常常喜歡一個條目添加到我的.ssh/config指定服務器的詳細信息:

Host git 
HostName git.example.net 
User git 
Port 7999 
PasswordAuthentication no 

那麼我可以用的git:path/to/repo.git/短的語法。

+0

我沒有添加一個條目到'.ssh/config',主機名爲'my-key',但我是得到'ssh:無法解析主機名my-key:名稱或服務未知' – octavian

+0

您的主機名是my-repo.com還是my-key? –

+0

對不起,主機是'my-key',主機名是'my-repo'。 – octavian

0

檢查您的公鑰的權限。你是否首先拉它 時間,那麼你的鑰匙需要有一定的特權。

你已經找到了你的密鑰文件,你保存在你的窗口中。

要設置,查看,更改或對文件和文件夾刪除權限

  • 右鍵單擊要爲其設置權限,單擊屬性,然後單擊安全選項卡中的文件或文件夾。
  • 單擊編輯打開權限對話框。 執行以下操作之一:
  • 要設置組或用戶未出現在組或用戶名框中的權限,請單擊添加。鍵入要爲其設置權限的組或用戶的名稱,然後單擊確定。

  • 要更改或刪除現有組或用戶的權限,請單擊該組或用戶的名稱。

執行下列操作之一: - 要允許或拒絕權限,在權限框,選擇允許或拒絕複選框。

  • 要從組或用戶名稱框中刪除組或用戶,請單擊刪除。

欲瞭解更多信息,您可以檢查此鏈接來設置權限: https://msdn.microsoft.com/en-us/library/bb727008.aspx

1

你沒有帶添加您的私鑰對ssh.agent.exe

你HAVN沒有告訴我們你的環境。

這就是我每天使用ssh密鑰的方式。

爲我的ssh-add所在的位置設置別名。這只是讓一切變得美好。

Set-Alias ssh-add "C:\Program Files\Git\usr\bin\ssh-add.exe" 

啓動SSH代理 - 哪些服務器的SSH密鑰

Start-SshAgent -Quiet 

添加您的私鑰到您的會話

ssh-add C:\Users\username\.ssh\privateKey 

這就是所有。

我在windows $ powershell中的$ profile中運行這三個命令。

+0

從Git Bash:'/ c/Program \ Files/Git/usr/bin/ssh-add.exe/c/Users/my-user/.ssh/id_rsa'。爲此,我得到:'無法打開連接到您的身份驗證代理.' – octavian

+0

檢查ssh代理是否在git bash中運行: 'eval'ssh-agent.exe' 如果它正在運行,它將打印輸出像這樣: '代理的pid 8772' 如果它在運行,那麼你可以添加你的SSH密鑰: 'SSH-添加C:/ path_to_key /的.ssh/id_rsa' 你確定你的SSH密鑰位於'/C /用戶/我的用戶/的.ssh/id_rsa'?我已經將鍵值保存到'/ c/Users/my-user /',因此密鑰實際上不在.ssh文件夾中? – kkflf