題 從Windows到Linux的SSH,無需輸入密碼


我試圖使用從Windows到Linux的ssh / scp而無需輸入密碼。

這就是我所做的,它似乎不起作用:

  • 使用Putty密鑰生成器生成公鑰和私鑰(在Windows上)
  • 將文件保存為 id_rsa.pub 和 id_rsa
  • 將它們複製到 ~/.ssh
  • 將id_rsa.pub添加到Linux框中 ~/.ssh/authorized_keys
  • 然後我嘗試 ssh 從Windows到Linux機箱,我仍然需要輸入密碼

我錯過了什麼嗎?


8
2018-01-13 16:44


起源




答案:


你需要 盛會

看視頻 使用PuTTY和Pageant進行無密碼登錄。和/或博客文章 Howto:使用PuTTY進行無密碼SSH身份驗證


7
2018-01-13 16:49



請嘗試鏈接到基於文本的教程而不是視頻。 - a coder
博客鏈接已損壞。試試這個: tecmint.com/ssh-passwordless-login-with-putty - Kai Wang
破壞的博客鏈接是答案應該更多的鏈接的確切原因。 - Ramhound


您必須在Windows上運行身份驗證代理。

例如, 盛會,與...結合使用 油灰 (圖形化SSH客戶端)或Plink(其命令行等效)。

您需要告訴Pageant您的SSH服務器的公鑰。之後,它將在後台運行時處理您的服務器的身份驗證請求。


6
2018-01-13 16:50



注意:(這對我來說並不明顯。)打開Pageant時,它將在右下角的通知區域中以圖標的形式打開。右鍵單擊它,然後單擊 添加密鑰,並選擇從puttygen生成的.ppk文件。 - badjr


試試Plink(PuTTY的一部分)

 plink -v youruser@yourhost.com -pw yourpw "some linux command"

3
2018-01-13 16:50



+1表示正確的響應,但您最好使用公鑰/私鑰對而不是密碼。 - Ted Percival


設置SSH密鑰身份驗證可能有點棘手。聽起來你覆蓋了所有的基礎。有一件事常常讓人措手不及 - 你需要確保 .ssh 目錄及其內容歸您所有,只能由您讀/寫。

一定要運行這個(在你的所有 .ssh 目錄):

chmod -R 700 on ~/.ssh

如果這不起作用,請通過添加打開詳細日誌記錄 -v 到你的 ssh 命令(最多可以添加三個 -vs為了更多的冗長)。


3
2018-01-13 16:57





我假設您的密鑰沒有密碼保護,而您獲得的密鑰不是密碼請求。

窗口側的putty不使用〜/ .ssh,而putty沒有默認的私鑰設置。如果您正在使用命令行ssh客戶端(例如cygwin),則可以在家中創建.ssh目錄。從putty開始,您需要配置並保存會話。

從putty配置對話框中,查看connection - > data,並填寫自動登錄用戶名字段。然後轉到連接 - > ssh - > auth,並正確設置您的私鑰。然後返回會話對話框,並保存此會話。如果您願意,也可以設置主機名。

保存會話後,您可以使用'putty -load“savedsession”'。


2
2018-01-18 19:31



另外,目標機器上的chmod 700~ / .ssh,以及chmod 644~ / .ssh /授權密鑰。一旦我按照您的說明正確設置權限,它就開始為我工作了。 - Blisterpeanuts


您可能還需要更改主目錄的權限:

chmod 755 ~

1
2017-08-04 12:18





我已經嘗試了幾種方法來做到這一點,第一個對我有用的方法是 ssh-copy-id

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :

ssh-keygen.exe -t rsa -b 2048 
ssh-copy-id -i ~/.ssh/id_rsa.pub  $remoteuser@$remotehost


# I'm not sure if these two chmod lines are needed on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa

獲得最簡單的方法 ssh 工具是為Windows安裝git。

我從git安裝的bash shell運行了上面的命令。從powershell運行ssh-copy-id不知何故不起作用所以我以這個PowerShell腳本結束了

Param(
  [Parameter()][string]$keyfile="id_rsa",
  [Parameter()][string]$remotehost,
  [Parameter()][string]$remoteuser
  )
write-host "# ---------------------------------------------------------------------------------#"
write-host "# Create an RSA public/private key pair, and copy the public key to remote server  #"
write-host "#                                                                                  #"
write-host "# https://superuser.com/questions/96051                                            #"
write-host "#         ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805    #"
write-host "#                                                                                  #"
write-host "# ---------------------------------------------------------------------------------#"

write-host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-host "And copied to $remoteuser@$remotehost"
write-host ""
write-host "You will need a password for the copy operation."
write-host ""

if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"

# I'm not sure if these two chmod lines work on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"

0
2018-04-02 17:28





我完全可以做到這一點 Windows 7 通過使用 -i 提供身份私鑰的選項:

ssh -i X:\ win-path \ to \ private-key remoteuser@remote.host.com

除了在遠程主機上,我的授權密鑰在 /etc/ssh/authorized_keys/remoteuser 並在 /etc/ssh/sshd_config, 我變了

#AuthorizedKeysFile     .ssh/authorized_keys
AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

但我不知道SSH遠程配置是否重要。


0
2017-10-25 21:46