Я попытаюсь обобщить это как можно лучше и как можно подробнее. Я развернул свой первый сайт Django на сервере Ubuntu (23.04) на Linode вчера вечером после того, как прочитал эту статью Corey Schafer Python Djangoруководство. Все прошло хорошо, и я настроил SSH, как показано в видеоуроке, примерно через 23–25 минут без проблем. Я проверил, что все работает в какой-то момент. Я вышел с сервера и проверил, что могу снова войти через SSH без каких-либо проблем. Продолжая, я потратил еще час или два и настроил кучу других вещей и убедился, что сайт работает, прежде чем лечь спать и выйти с сервера. Сегодня я вернулся, чтобы подключиться к серверу, и меня встретило сообщениеPermission denied (publickey).
Зная, что я добавил брандмауэр после всего этого, я подумал, что здорово, что я, вероятно, заблокировал себя от ssh-соединений или что-то в этом роде. Однако после некоторого гугления я наткнулся на этот модификатор ssh -vT user@IP
и быстро увидел, что он действительно, похоже, пытается подключиться по ssh, и соединение устанавливается, но оно просто не устанавливается по причинам, которые я не совсем понимаю.
Затем я попытался войти в систему как пользователь root через Linodes Weblish и успешно смог войти, а также попытался проверить несколько вещей.
• Сначала я проверил, есть ли в указанном месте папка /home/user/.ssh
, содержащая файл с ключом.
sudo chmod 700 ~/.ssh/
• Во-вторых, я проверил разрешения, просмотрев видеоинструкцию по папке ~/.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. Так что пока я могу войти в систему, не используя веб-предложения Linode. Однако после этого я попытался перезапустить службу ssh на сервере с помощью следующей команды, sudo systemctl restart sshd
как сказано в руководстве, которую следует сделать при редактировании этого файла. Вместо этого я получил ошибку. Failed to restart sshd.service: Unit sshd.service not found.
Я помню, что получал это сообщение вчера вечером, когда настраивал сервер, и быстрый поиск в Google показал, что название службы изменилось, поэтому я попробовал, 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.
я упоминал ранее, есть что-то еще. Также есть ли какие-либо мысли просто перезагрузить сервер? Звучит странно, но, возможно, что-то вроде брандмауэра или чего-то еще перезагрузится, и тогда все будет хорошо.