已在伺服器上註冊公鑰後提示輸入密碼
注意:這不是流行問題的重複。 為什麼我仍然通過 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
- 使用 wc 命令: 使用此命令:
wc ~/.ssh/authorized_keys
我得到了以下輸出:
1 3 398 /home/superjohnny/.ssh/authorized_keys
- 檢查我的主目錄是否已加密: 我使用了以下命令:
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只是告訴我重新創建我已經做過很多次的密鑰文件
- 使用 grep 命令: 使用以下命令:
grep -v '^[[:space:]]*$' ~/.ssh/authorized_keys | wc -l
我得到以下輸出:
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
- 嘗試查看主目錄權限是否必須更小: 我嘗試更改主目錄權限,因為我認為 .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 中,如下所示:
謝謝你們也提供幫助,我在解決這個問題的過程中學到了很多東西。