無法拒絕 SSH 權限公鑰

無法拒絕 SSH 權限公鑰

我將盡力並儘可能詳細地總結這一點。昨晚,在遵循 Corey Schafer Python Django 之後,我將第一個 Django 網站部署到了 Linode 上的 Ubuntu (23.04) 伺服器上教學。一切都很順利,我按照影片中的教學進行了大約 23-25 分鐘的設定 SSH,沒有出現任何問題。我曾經驗證過一切都正常。我退出了伺服器並確認我可以透過 SSH 重新登錄,沒有任何問題。繼續我又花了一兩個小時,配置了一堆其他東西,並確保在睡覺並退出伺服器之前網站已啟動。今天我回去連接伺服器,收到一則訊息Permission denied (publickey).

知道在這一切之後我添加了防火牆,我認為很好,我可能將自己鎖定在 ssh 連接之外或其他東西。然而,經過一番谷歌搜索後,我遇到了這個修改器ssh -vT user@IP,很快發現它確實似乎在嘗試通過 ssh 連接並建立了連接,但由於我不完全理解的原因,它只是失敗了。

接下來,我嘗試透過 Linodes Weblish 以 root 使用者身分登錄,並成功登入並嘗試驗證一些事情。

• 首先,我確認該位置有一個資料夾/home/user/.ssh,其中包含帶有金鑰的檔案。

• 其次,我透過傳回 ~/.ssh/ 資料夾及其內容的視訊演練來驗證權限,並再次執行以下兩個命令。sudo chmod 700 ~/.ssh/sudo chmod 600 ~/.ssh/*

我的主目錄中的 ssh 資料夾的結果如下。

lewpiper@django-server:~$ la -la
total 40
drwxrwxrwx 6 lewpiper lewpiper 4096 Jun 14 06:37 .
drwxr-xr-x 3 root     root     4096 Jun 14 05:22 ..
-rw------- 1 lewpiper lewpiper  100 Jun 14 05:34 .bash_history
-rw-r--r-- 1 lewpiper lewpiper  220 Jun 14 05:22 .bash_logout
-rw-r--r-- 1 lewpiper lewpiper 3771 Jun 14 05:22 .bashrc
drwx------ 4 lewpiper lewpiper 4096 Jun 14 06:09 .cache
drwxrwxr-x 3 lewpiper lewpiper 4096 Jun 14 06:37 .local
drwxr-xr-x 8 lewpiper www-data 4096 Jun 14 06:36 Portfolio
-rw-r--r-- 1 lewpiper lewpiper  807 Jun 14 05:22 .profile
drwx------ 2 lewpiper lewpiper 4096 Jun 15 06:03 .ssh
-rw-r--r-- 1 lewpiper lewpiper    0 Jun 14 05:33 .sudo_as_admin_successful

以下是主目錄中 ssh 資料夾內檔案的權限。

lewpiper@django-server:~/.ssh$ ls -la
total 12
drwx------ 2 lewpiper lewpiper 4096 Jun 15 06:03 .
drwxrwxrwx 6 lewpiper lewpiper 4096 Jun 14 06:37 ..
-rw------- 1 lewpiper lewpiper  749 Jun 14 05:32 authorized_keys

• 第三,我在伺服器上設定了防火牆,目前允許的連線類型如下。

lewpiper@django-server:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)  

• 最後,我查看了該/etc/ssh/sshd_config文件並暫時再次啟用了PasswordAuthentication,直到我能夠找到ssh 問題的根源。所以現在我可以登入而無需使用 weblish Linode 提供的服務。但是,在執行此操作之後,我嘗試使用以下命令重新啟動伺服器上的 ssh 服務,sudo systemctl restart sshd正如教程中所述,您在編輯此文件時應該執行此操作。相反,我記得昨晚收到了一條錯誤Failed to restart sshd.service: Unit sshd.service not found.訊息,當時我正在為伺服器進行設置,並且快速谷歌搜尋發現服務的命名發生了變化,所以我嘗試了,sudo systemctl restart ssh這似乎昨晚就成功了,但是我想知道我在這方面是否錯誤。

以下是我現在擁有的 sshd_config 文件,但請注意,我確實將密碼身份驗證更改為 yes,以便我可以登入而無需使用生成的 rsa 金鑰,這是我的問題。

LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile     .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and KbdInteractiveAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem       sftp    /usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server

問題: 所以我的問題分為兩個部分。我是否錯過了任何我可以做的事情來更好地解決為什麼會發生這種情況或我可以嘗試?兩個,如果沒有其他建議的故障排除,我是否應該嘗試刪除伺服器上的authorized_keys 檔案並將其安全地複製到伺服器?請注意,我什至不確定這是否有效,因為我什至不相信這就是問題所在。我的預感是我可能遺漏了一些東西,或者Failed to restart sshd.service: Unit sshd.service not found.我之前提到的訊息有更多內容。還有沒有想過重新啟動伺服器?聽起來很奇怪,但也許像防火牆之類的東西或重新加載的東西,然後一切都很高興。

相關內容