Вход по SSH Pub Key без пароля

Вход по SSH Pub Key без пароля

Я настраиваю SSH-сервер на Ubuntu 14.04.1 Server Edition. Цель — использовать только аутентификацию с открытым ключом и разрешить только определенные имена пользователей.

Мои открытый и закрытый ключи созданы, а на закрытом ключе установлен пароль. Я скопировал открытый ключ на сервер (точный процесс описан ниже) и смог впервые подключиться к серверу по SSH, используя эту команду

ssh -i /path/to/id_rsa -p 50000 [email protected]

Мне было предложено ввести пароль закрытого ключа и разрешили войти в систему. Отлично.

Однако каждый раз, когда я подключаюсь к серверу по SSH, мне больше не предлагается ввести пароль моего закрытого ключа. Я даже могу войти, не указывая путь к моему закрытому ключу, например так:

ssh -p 50000 [email protected]

Я даже могу удалить ~/.ssh/known_hosts на клиенте (Mac OS X 10.8) и успешно подключиться к серверу по SSH через

ssh -p 50000 [email protected]

Итак, мои вопросы:

  1. Что использует сервер для моей аутентификации, если он не использует мой закрытый ключ, пароль ключа или содержимое клиентского ~/.ssh/known_hosts?
  2. Мой SSH-сервер небезопасен? Копия sshd_config приведена ниже.

Спасибо за вашу помощь.

Процесс создания ключа

- at your computer (not the server) do
    - generate the keys: ssh-keygen -t rsa -b 4096
        - public key is saved at ~/.ssh/id_rsa.pub
        - private key is saved at ~/.ssh/id_rsa
- copy id_rsa.pub to server and append to ~/.ssh/authorized_keys
    - ssh-copy-id username@remotehost
    - a more secure method is to copy via usb drive
        - make a backup: cp authorized_keys authorized_keys.original
        - add public key to file: cat id_rsa.pub >> authorized_keys
    - if your home directory is encrypted (mine is)
        - in sshd_config: AuthorizedKeysFile /etc/ssh/%u/authorized_keys
        - move the authorized_keys file to /etc/ssh/me/authorized_keys
            - mkdir /etc/ssh/me
                - chmod u=rwx,go= /etc/ssh/me
                - chown me /etc/ssh/me
            - mv ~/.ssh/authorized_keys /etc/ssh/me/authorized_keys
                - chmod u=rw,go= /etc/ssh/me/authorized_keys
                - chown me /etc/ssh/me/authorized_keys

sshd_config

# User modified sshd_config.
# See the sshd_config(5) manpage for details.


#### Networking options ####

# Listen on a non-standard port > 1024. Default is 22.
Port 50000

# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0

# Only use protocol version 2.
Protocol 2

X11Forwarding no
X11DisplayOffset 10

# Helps the server recognize problems and the connection will be killed.
TCPKeepAlive yes

#### Networking options ####


#### Key Configuration ####

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# Privilege Separation is turned on for security.
UsePrivilegeSeparation yes

# Use public key authentication
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/%u/authorized_keys

#### Key Configuration ####


### Authentication ###

# 30 seconds to enter your key passphrase.
LoginGraceTime 30

# No root login.
PermitRootLogin no

# Force permissions checks on keyfiles and directories.
StrictModes yes

HostbasedAuthentication no

# Don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication.
IgnoreUserKnownHosts yes

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

# Disable challenge and response auth. Unnecessary when using keys.
ChallengeResponseAuthentication no

# Disable the use of passwords completly, only use public/private keys.
PasswordAuthentication no

# Using keys, no need for PAM (Pluggable Authentication Modules).
# Also allows SSHD to be run as a non-root user.
UsePAM no

# Don't use login(1)
UseLogin no

AllowUsers me

### Authentication ###


### Misc ###

# Logging
SyslogFacility AUTH
LogLevel VERBOSE

# Print the last time the user logged in.
PrintLastLog yes

# Maximum number of concurrent unauthenticated connections to the SSH daemon (the number of users still logging in).
MaxStartups 10:30:60

# Display login banner.
Banner /etc/issue.net

# Allow client to pass locale environment variables.
# Accept language variables to help the shell session display properly for the client.
AcceptEnv LANG LC_*

# External file transfer daemon to use for sftp requests.
Subsystem sftp /usr/lib/openssh/sftp-server

# Should the SSH daemon itself read and display the message of the day file.
PrintMotd no

### Misc ###

Конфигурация брандмауэра

- allow incoming connections to port 50000
    - sudo ufw allow in 50000
- Rate-limit the connections
    For example, deny connections if an IP address has attempted to initiate
    6 or more connections in the last 30 seconds.
    - sudo ufw limit ssh

решение1

  1. Ваш клиентский компьютер, вероятно, кэшировал учетные данные, поэтому он, вероятно, все еще использует ваш закрытый ключ. Если вы перезагрузите компьютер, вам придется снова ввести парольную фразу. (Кроме того, если ваши ключи находятся в ~/.ssh/, то это место по умолчанию sshдля их проверки)

  2. Ваша конфигурация SSH выглядит нормально, как и настройки вашего брандмауэра (предполагая, что он установлен по умолчанию на отклонение). Я не могу комментировать безопасность вашей системы в целом.

Дайте мне знать, если что-то упущено.

Связанный контент