Ubuntu

已在伺服器上註冊公鑰後提示輸入密碼

  • May 1, 2016

注意:這不是流行問題的重複。 為什麼我仍然通過 ssh 和公鑰身份驗證收到密碼提示?

我有一個原始文章,但我沒有得到太多幫助我的答案。我將嘗試詳細解釋我的 3 天問題。

我如何將 id_rsa.pub ssh 密鑰添加到我的 Ubuntu 伺服器中:

我所做的是通過我的普通 Windows 10 電腦通過 git scm 終端創建它(可以在這裡找到https://git-for-windows.github.io/)。我不得不使用 git,因為 Windows 10 中的普通 cmd 提示符不起作用。我通過 ssh-keygen 生成它,它為我生成了 2 個密鑰,一個 id_rsa 和一個 id_rsa.pub。

之後,我進入我的 putty 終端,登錄到我的遠端伺服器並在我的 /home/superjohnny 文件夾(我的 sudo 使用者)中創建了一個 .ssh 目錄,並在 .ssh 文件夾中創建了一個名為 authorized_keys 的文件夾。我將 id_rsa.pub 密鑰複製並粘貼到了 authorized_keys 文件夾中,然後通過執行 chmod 600 .ssh/authorized_keys 添加了 600 個權限。

一旦我這樣做了,我就進入了我的 /etc/ssh/sshd_config 並將以下內容添加到我的配置設置中:

   RSAAuthentication yes
   PubkeyAuthentication yes
   AuthorizedKeysFile %h/.ssh/authorized_keys

所有這些行也未註釋。然後我做了 sudo service ssh restart ,然後在嘗試登錄時仍然收到密碼提示。這已經持續了一周

我嘗試過的方法: 我已經使用了上面討論的兩個執行緒來嘗試獲得答案,並且我還廣泛使用了我的Google搜尋。以下是我使用過的方法。

1.將密鑰放在 我嘗試在電腦上的 git scm 終端中使用以下命令的一行:

   cat ~/.ssh/id_rsa.pub | awk '{print}' ORS=' '

上面的命令應該沒有做任何事情,因為當我複制它時,密鑰已經在一行上,只是終端無法容納密鑰。這是我用來查找該命令的執行緒。 https://stackoverflow.com/questions/36818651/how-to-display-output-on-single-line

  1. 使用 wc 命令: 使用此命令:
wc ~/.ssh/authorized_keys

我得到了以下輸出:

 1   3 398 /home/superjohnny/.ssh/authorized_keys
  1. 檢查我的主目錄是否已加密: 我使用了以下命令:
ls -A /home/superjohnny

我得到了以下輸出:

.bash_history  .bash_logout  .bashrc  .cache  .profile  .ssh  .viminfo

找不到 .encrypted 文件夾。 4. 進入調試模式以檢查額外資訊: 在會話中我執行了以下命令:

ssh -v superjohnny@myip

結果得到了這個:

   debug1: Found key in /home/superjohnny/.ssh/known_hosts:1
   debug1: ssh_ecdsa_verify: signature correct
   debug1: SSH2_MSG_NEWKEYS sent
   debug1: expecting SSH2_MSG_NEWKEYS
   debug1: SSH2_MSG_NEWKEYS received
   debug1: SSH2_MSG_SERVICE_REQUEST sent
   debug1: SSH2_MSG_SERVICE_ACCEPT received
   debug1: Authentications that can continue: publickey,password
   debug1: Next authentication method: publickey
   debug1: Trying private key: /home/superjohnny/.ssh/id_rsa
   debug1: Trying private key: /home/superjohnny/.ssh/id_dsa
   debug1: Trying private key: /home/superjohnny/.ssh/id_ecdsa
   debug1: Trying private key: /home/superjohnny/.ssh/id_ed25519
   debug1: Next authentication method: password

這一定是對某些事情的暗示,但是通過網路瀏覽了一段時間我找不到太多關於這個問題的資訊,只在這裡找到了一個關於它的執行緒:https ://askubuntu.com/questions/54670/passwordless-ssh-not-工作 而這個thead只是告訴我重新創建我已經做過很多次的密鑰文件

  1. 使用 grep 命令: 使用以下命令:
grep -v '^[[:space:]]*$' ~/.ssh/authorized_keys | wc -l

我得到以下輸出:

1
  1. 檢查日誌消息: 使用以下命令:
sudo vi /var/log/auth.log

我在同一天收到了很多錯誤,完全相同的錯誤,但我只會發布一點:

Apr 25 04:14:01 ramnode CRON[977]: pam_unix(cron:session): session    closed for user root
Apr 25 04:54:01 ramnode CRON[1076]: pam_env(cron:session): Unable to open env file: /etc/default/locale: No such file or directory

我在 4 月 25 日以外的任何其他日子都沒有收到任何其他消息。 7. 使用 sshd 進入調試模式:

正在做

   /usr/sbin/sshd -d

給我一個輸出:

   debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
   debug1: could not open key file '/etc/ssh/ssh_host_rsa_key': Permission denied
   Could not load host key: /etc/ssh/ssh_host_rsa_key
   debug1: could not open key file '/etc/ssh/ssh_host_dsa_key': Permission denied
   Could not load host key: /etc/ssh/ssh_host_dsa_key
   debug1: could not open key file '/etc/ssh/ssh_host_ecdsa_key': Permission denied
   Could not load host key: /etc/ssh/ssh_host_ecdsa_key
   debug1: could not open key file '/etc/ssh/ssh_host_ed25519_key': Permission denied
   Could not load host key: /etc/ssh/ssh_host_ed25519_key
   debug1: setgroups() failed: Operation not permitted
   debug1: rexec_argv[0]='/usr/sbin/sshd'
   debug1: rexec_argv[1]='-d'

但是在命令前面添加 sudo 就像這樣:

   sudo /usr/sbin/sshd -d

給我一個輸出:

   debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
   debug1: key_parse_private2: missing begin marker
   debug1: read PEM private key done: type RSA
   debug1: private host key: #0 type 1 RSA
   debug1: key_parse_private2: missing begin marker
   debug1: read PEM private key done: type DSA
   debug1: private host key: #1 type 2 DSA
   debug1: key_parse_private2: missing begin marker
   debug1: read PEM private key done: type ECDSA
   debug1: private host key: #2 type 3 ECDSA
   debug1: private host key: #3 type 4 ED25519
   debug1: rexec_argv[0]='/usr/sbin/sshd'
   debug1: rexec_argv[1]='-d'
   Set /proc/self/oom_score_adj from -800 to -1000
  1. 嘗試查看主目錄權限是否必須更小: 我嘗試更改主目錄權限,因為我認為 .ssh 目錄可能不允許該權限工作。我使用了以下命令:
chmod 755 ~/

但是當我用 sudo service ssh restart 重新啟動我的終端,然後當我重新登錄到另一個終端時,它仍然提示我輸入密碼。 9. 嘗試禁用密碼 我嘗試禁用密碼並且不退出我的分離,因此如果它不起作用我可以更改它。我通過進入

/etc/ssh/sshd_config 

但是當我進入新的終端螢幕時,出現以下錯誤:

Disconnected: No supported authentication methods avaliable(server sent: publickey

/var/log/auth.log 我在嘗試禁用密碼登錄時收到的 /var/log/auth.log 消息是這樣的:

   May  1 09:02:00 ramnode sshd[16905]: error: Received disconnect from 64.121.77.168: 14: No supported authentication methods available [preauth]
   May  1 09:02:13 ramnode sudo: superjohnny : TTY=pts/1 ; PWD=/home/superjohnny ; USER=root ; COMMAND=/usr/bin/vi /var/log/auth.log
   May  1 09:02:13 ramnode sudo: pam_unix(sudo:session): session opened for user root by superjohnny(uid=0)

在一位對我的問題非常有耐心的好朋友的幫助下,我找到了答案。問題是膩子客戶端沒有設置為接受我的密鑰,我擁有授權的密鑰文件和所有權限,只是這個小問題直到現在才注意到。

在我的膩子客戶端中,我沒有將私鑰放入我的分離中,我最初認為遠端伺服器只會查看我的文件並檢查密鑰是否存在。我錯了,我的朋友告訴我這將是一個巨大的安全風險,並說必須將私鑰放入 putty 中,如下所示:

在此處輸入圖像描述

謝謝你們也提供幫助,我在解決這個問題的過程中學到了很多東西。

引用自:https://unix.stackexchange.com/questions/278745