題 如何使用PuTTY的SSH公鑰連接到Linux機器


我正在嘗試設置從Windows 7計算機到Red-Hat Linux計算機的公共SSH密鑰連接。最終目的是使用 pscp (PuTTY的版本 scp)從命令終端無需重複輸入密碼。

根據PuTTY的文檔和其他在線資源,我使用了 的puttygen 生成密鑰對。然後我將生成的公鑰複製到 ~/.ssh/authorized_keys Linux機器上的文件(據我所知,它運行OpenSSH服務器)。

要檢查連接,我運行PuTTY並在其GUI中的適當位置設置用戶名和私鑰文件。

但是,當嘗試使用PuTTY的SSH連接時,連接使用預設的用戶名,但我收到錯誤消息“Server refused our key“並提示輸入密碼。

然後我嘗試從中復制粘貼公鑰文本 的puttygen的圖形用戶界面 authorized_keys 文件,但它也沒有用。

  1. 我應該如何設置Win 7到Linux的公鑰連接?

  2. 我該如何使用它 pscp (而不是PuTTY的ssh)?


更新: 認為問題可能與 的puttygen 密鑰格式,我用過 ssh-keygen 在Linux機器上創建RSA密鑰對。它產生了一個 id_rsa 私鑰和 id_rsa.pub 公鑰。試著用 > ssh-add id_rsa 沒有成功,因為我得到的答复“Could not open a connection to your authentication agent.“所以我剛才用過 > cp id_rsa.pub authorized_keys

然後我將這些文件複製到Windows機器上並使用 的puttygen 將私鑰轉換為PuTTY私鑰格式(*.ppk)。嘗試使用新密鑰進行連接,我得到了“Server refused our key“。


5
2017-11-07 21:05


起源


確保所有權 ~/.ssh 是正確的,權限是 0600 (+x 對於目錄)。如果您正在使用SELinux,請運行 restorecon -R -v ~/.ssh 將確保標籤是正確的。 - Cristian Ciupitu
@CristianCiupitu - 我正在使用Red-Hat。我將權限更改為 777 但它沒有解決問題。 - ysap
我沒有說要改變許可 777 (世界可讀和可寫),我說要讓他們保密。 - Cristian Ciupitu
@CristianCiupitu - 你建議dir和key-file的'700'和'600'是一個 最大值 需求? SSH應該失敗,因為它是世界上可用的???無論如何,我做了改變但仍然沒有成功。 - ysap
查看日誌並更新問題。 - Cristian Ciupitu


答案:


你必須正確地遵循這些。

在SSH服務器中配置公鑰

通過SFTP將公鑰複製到SSH服務器

put publicy_key

登錄SSH服務器驗證複製的公鑰

ls -l public_key

由於公鑰沒有任何權限,因此將其更改為400(用於讀取)

chmod 400 public_key

使用ssh-keygen工具創建openSSH格式的公鑰

ssh-keygen -if public_key > public_key_openssh_format

將創建的openSSH公鑰添加到authorized_keys文件中

cat public_key_openssh_format >> ~/.ssh/authorized_keys

檢查.ssh文件夾和authorized_keys文件的權限以獲取訪問權限

ls -al ~/.ssh

使用PuTTY驗證密鑰對

現在,可以使用PuTTY驗證基於密鑰的身份驗證。 輸入主機名和端口

選擇私鑰(.ppk)

確認安全警報

如果配置正確,將成功建立連接

如果你仍然卡住了。然後,您必須重新創建用戶並按照步驟重新配置公鑰。

可以使用以下命令重新創建用戶:

製作用戶文件夾的副本並在重新創建之前將其刪除。

yast2 users add username=userName cn=" User for test" password="password" gid=100 grouplist=dialout,video type=local

3
2017-11-08 03:58



我相信命令可能會稍微改變,因為這是一個紅帽系統 - 我相信adduser是用於此的'標準'命令。儘管如此,很好地使用屏幕截圖(即使我傾向於復制/粘貼然後使用代碼或預處理塊以獲得更好的搜索/可複制性和更小的頁面大小)來說明答案。 - Journeyman Geek♦
我不確定我的答案是否會張貼,因為它包含圖片(因為我也只有11個聲譽)。下次我回答任何問題時,我會處理格式化。感謝@slhck格式化答案,他也提到了同樣的問題。 - Vishnu Prasad Kallummel
謝謝。所以,我用過 scp 將公鑰複製到遠程計算機。在那裡,我用過 ssh-keygen -if puttygen.pub.key > ~/.ssh/authorized_keys 並確保目錄和文件具有讀取權限。但是,在運行PuTTY並選擇私鑰時,我仍然可以從Linux帳戶獲得相同的響應。我沒有得到PuTTY的密鑰緩存消息(可能是第一次使用該密鑰時它就在那裡)。我認為 sftp 在你的回答中使用,如果不是關鍵,對吧?我也注意到你有一個 ~/.ssh/known_hosts 文件。這對過程至關重要嗎? - ysap
請注意,這是一台企業Linux機器,我無法創建新用戶。只需玩我的帳戶。 - ysap
請注意更新問題。 - ysap


我已經得出結論,PuTTY或PuTTYgen已被破壞。這不是關於文件格式的一些微不足道的用戶錯誤。如果我計算服務器上授權公鑰的哈希值,它會匹配PuTTYgen在我生成密鑰的客戶端上顯示的哈希值。然而,服務器拒絕了它不匹配的密鑰。

我已經嘗試過OS X,Linux和Cisco&Juniper路由器。來自PuTTYgen的ssh-rsa公鑰不起作用。

如果你使用OpenSSH生成密鑰,然後將它們導入PuTTYgen以保存為Puppty的.ppk,它可以正常工作。


0
2018-01-01 14:23





也許您需要將“Connection / SSH / Auth / Allow agent forwarding”選項設置為“true”。該 ssh-add 在我完成這個之後,命令對我有用。

PuTTY screenshot showing SSH authentication settings


0
2018-01-20 21:35



謝謝。我不再在那種環境中了,但為了未來的觀眾,你能不能詳細說明這個領域? - ysap