продолжение Даже не может войти без пароля.

$ ssh -v user@example.com
OpenSSH_6.0p1, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to example.com [XX.XX.XX.X1] port 22.
debug1: Connection established.
debug1: identity file /home/admin/.ssh/id_rsa type 1
debug1: identity file /home/admin/.ssh/id_rsa-cert type -1
debug1: identity file /home/admin/.ssh/id_dsa type -1
debug1: identity file /home/admin/.ssh/id_dsa-cert type -1
debug1: identity file /home/admin/.ssh/id_ecdsa type -1
debug1: identity file /home/admin/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-7ubuntu1
debug1: match: OpenSSH_5.8p1 Debian-7ubuntu1 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3b:81:30:2e:7a:c8:ca:51:7a:46:bb:50:cb:d3:a2:9b
debug1: Host 'example.com' is known and matches the ECDSA host key.
debug1: Found key in /home/admin/.ssh/known_hosts:2
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
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: Offering RSA public key: /home/admin/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/admin/.ssh/id_dsa
debug1: Trying private key: /home/admin/.ssh/id_ecdsa
debug1: Next authentication method: password
user@example.com's password:

Файл sshd_config на сайте, к которому я хочу подключиться, но не могу.

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

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

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

#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

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

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

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

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

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

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication 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 ChallengeResponseAuthentication to 'no'.
UsePAM yes

AllowUsers user

права доступа к файлу:


.ssh directory permission on the server example.com

drwx------ 2 user user      4096 2012-07-26 13:35 .ssh


permissions on the files of the .ssh file 

-rw------- 1 user user  398 2012-07-26 13:35 authorized_keys
-rw-r--r-- 1 user user 1428 2012-07-25 18:55 known_hosts
--------------------------------------------------------------------


pemissions in the files ~/.ssh and ~/.ssh/ files workstation 

drwx------+ 1 Admin  None     0 Jul  9 17:05 .ssh

-rw-------  1 admin None 1679 Jul  9 17:05 id_rsa
-rw-r--r--  1 admin None  398 Jul  9 17:05 id_rsa.pub
-rw-r--r--  1 admin None  383 Jul 26 13:35 known_hosts

1 ответ1

5

теоретический

Я чувствую, что мне нужно уточнить некоторые вещи, которые вы можете или не можете понять о том, как работает SSH:

В контексте SSH, Passwordless может относиться к двум вещам:

  • Аутентификация по SSH без предоставления пароля по проводам; т.е. с использованием аутентификации с открытым ключом
  • Аутентификация по SSH без предоставления пароля по проводам и без использования пароля для защиты расшифровки вашего личного ключа

Итак, есть три возможных режима:

  1. Авторизуйтесь, напрямую указав пароль. Открытые / закрытые ключи не используются.
  2. Выполните аутентификацию с помощью пары открытых / закрытых ключей, но укажите пароль на своем клиентском компьютере, чтобы расшифровать закрытый ключ и сделать его пригодным для использования. Это делается с помощью ssh-agent . Пароль дешифрования закрытого ключа кэшируется, поэтому он предоставляется только один раз на время сеанса входа в систему; после этого пароль будет сохранен в ssh-agent .
  3. Аутентификация с помощью открытой / закрытой пары ключей, но пара ключей не защищена паролем, поэтому пользователь вообще не вводит пароль.

Второй режим наиболее безопасный. Вы можете протестировать этот режим, создав защищенную паролем пару ключей, убедитесь, что ssh-agent настроен правильно (как на современных дистрибутивах Linux), и он должен "просто работать": при первом входе в систему на SSH-сервере, который использует ваш личный ключ, вы получите запрос на ввод пароля. Каждый раз после этого, пока вы не выйдете из системы, он "просто работает" без подсказки.

практический

debug1: аутентификации, которые могут продолжаться: publickey, пароль
debug1: следующий метод аутентификации: publickey
debug1: предложение открытого ключа RSA: /home/admin/.ssh/id_rsa
debug1: аутентификации, которые могут продолжаться: publickey, пароль
debug1: пробуем закрытый ключ: /home/admin/.ssh/id_dsa
debug1: пробуем закрытый ключ: /home/admin/.ssh/id_ecdsa
debug1: следующий метод аутентификации: пароль

Попробуйте следующее:

  • Переименуйте файл known_hosts во что-то другое (например, known_hosts.bak) как на клиенте, так и на сервере.

  • На сервере, вошли как user , попробуйте

    chmod go-w ~/
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

  • На клиенте, залогиненный как admin , попробуйте

    chmod 700 ~/
    chmod 700 ~/.ssh
    chmod 400 ~/.ssh/id_rsa chmod 400 ~/.ssh/id_rsa.pub
    # если у пользователя-администратора нет группы, создайте ее и сделайте ее основной группой пользователя-администратора
    chown -R admin:admin ~/.ssh

  • Удостоверьтесь, что содержимое ~/.ssh/id_rsa.pub (обратите внимание, что .pub является критически важным) находится в ~/.ssh/authorized_keys сервера на одной строке (без разрывов строк - но не путайте перенос текстового редактора и переносы строк; используйте cat ~/.ssh/authorized_keys чтобы убедиться, что вы просматриваете файл без переноса), и что содержимое ~/.ssh/id_rsa не находится ни на сервере, ни на самом деле, нигде но это одно место на клиенте. Примечание . Если вы случайно поместили ~/.ssh/id_rsa (закрытый ключ) на сервер, я настоятельно рекомендую вам удалить пару ключей и создать новую, начиная с нуля. Вы должны поставить новый id_rsa.pub в файл authorized_keys

  • ???

  • Прибыль!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .