SSH 권한 거부 공개 키를 사용할 수 없습니다.

SSH 권한 거부 공개 키를 사용할 수 없습니다.

나는 이것을 최선을 다해 최대한 자세히 요약하려고 노력할 것입니다. Corey Schafer Python Django를 따라한 후 어젯밤 Linode의 Ubuntu(23.04) 서버에 첫 번째 Django 사이트를 배포했습니다.지도 시간. 모든 것이 잘 진행되었고 튜토리얼이 문제 없이 약 23~25분 동안 비디오에서 진행되면서 SSH를 설정했습니다. 모든 것이 한 지점에서 작동하는지 확인했습니다. 서버를 종료하고 아무 문제 없이 SSH를 통해 다시 로그인할 수 있는지 확인했습니다. 계속해서 한 두 시간 정도 더 시간을 들여 여러 가지 다른 항목을 구성하고 잠자리에 들고 서버를 종료하기 전에 사이트가 제대로 작동하는지 확인했습니다. 오늘 다시 서버에 연결했는데 메시지가 왔어요Permission denied (publickey).

이 모든 작업을 마친 후 방화벽을 추가했다는 사실을 알고 SSH 연결 등에서 자신을 잠그는 것이 좋다고 생각했습니다. 그러나 인터넷 검색을 한 후 이 수정자를 발견 ssh -vT user@IP하고 실제로 SSH를 통해 연결을 시도하는 것 같고 연결이 이루어졌지만 완전히 이해하지 못하는 이유로 실패하고 있다는 것을 빨리 확인했습니다.

다음으로 Linodes Weblish를 통해 루트 사용자로 로그인을 시도했고 성공적으로 로그인하여 몇 가지 사항을 확인할 수 있었습니다.

/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_configSSH 문제를 자세히 알아볼 수 있을 때까지 PasswordAuthentication을 다시 활성화했습니다. 따라서 지금은 weblish Linode 제안을 사용하지 않고도 로그인할 수 있습니다. 그러나 이 작업을 수행한 후 sudo systemctl restart sshd튜토리얼에서 이 파일을 편집할 때 수행해야 한다고 설명하는 대로 다음 명령을 사용하여 서버에서 SSH 서비스를 다시 시작하려고 했습니다 . 대신 오류가 발생했습니다 Failed to restart sshd.service: Unit sshd.service not found.. 어젯밤에도 서버 설정을 할 때 이 메시지를 받았던 기억이 나고, 빠른 Google 검색을 통해 서비스 이름이 변경되었다는 사실을 알게 되었고 그래서 시도했는데 sudo systemctl restart ssh어젯밤에 효과가 있는 것 같았습니다. 이 부분에 있어서 제가 틀린 것은 아닌지 궁금합니다.

아래는 현재 가지고 있는 sshd_config 파일입니다. 하지만 문제인 생성된 rsa 키를 사용하지 않고도 로그인할 수 있도록 비밀번호 인증을 yes로 변경했습니다.

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

질문: 그래서 여기에서 내 질문은 두 부분입니다. 이런 일이 발생하는 이유를 더 잘 해결하기 위해 할 수 있는 일을 놓쳤거나 시도해 볼 수 있는 일이 있었나요? 두 번째, 권장되는 다른 문제 해결 방법이 없는 경우 서버에서 authenticate_keys 파일을 삭제하고 서버에 안전하게 복사해야 합니까? 참고로 나는 그것이 문제라고 확신하지 못하기 때문에 그것이 효과가 있을지 긍정적이지도 않습니다. 내 직감으로는 내가 놓친 부분이 있거나 Failed to restart sshd.service: Unit sshd.service not found.앞서 언급한 메시지에 더 많은 내용이 있을 수 있다는 것입니다. 또한 서버를 재부팅할 생각은 없나요? 이상하게 들리겠지만 방화벽 같은 것이 다시 로드되거나 그러면 모든 것이 만족스러울 수도 있습니다.

관련 정보