Openssh server

Errors

Below are some common SSH authentication errors you might encounter.

Permission Denied With Password

Note

If you assigned an SSH key when creating your Droplet, is disabled for your Droplet and you need to use your SSH key to log in.

You might see these errors in both PuTTY and OpenSSH clients when attempting to log in to a Droplet with a password:

This indicates that authentication has failed and can be caused by a number of issues. Here are some steps you can take to troubleshoot this issue:

  • Make sure you’re using the right username. On CoreOS, use the core user. On FreeBSD, use the freebsd user.
  • User password authentication could be broken, so check if the Droplet console supports password login. If it doesn’t, or focus on recovering your data instead.
  • Check that .

Permission Denied With Key

This login method uses cryptographic keys to authenticate a user. You can learn more about how SSH keys work in our SSH Essentials tutorial.

This is the only authentication method supported when you create a Droplet using SSH keys. You can enable password authentication in the SSH service configuration file once you successfully log in with your SSH key.

You might see an error like this:

Many of the most common issues regarding key-based authentication are caused by incorrect file permissions or ownership. Here are some steps you can take to troubleshoot this issue:

  • Make sure the file and the private key itself have .
  • Check that .
  • Make sure the private key is readable by the SSH client. If you’re using
    PuTTY, make sure your SSH keys are properly configured for the session. If you’re using an OpenSSH client, be sure your private SSH key .
  • Make sure the file contains the matching public key. .
  • You may be using a private key that is no longer supported on the OpenSSH service. This commonly impacts OpenSSH 7+ servers (like our FreeBSD image) when using a private SSH DSA key. You’ll need to .

Password Does Not Work In Console

If you cannot recover access to the console, this could indicate issues with the file system used for authentication or configuration issues within the PAM subsystem. This would also impact attempts to reset the root password and log in through the console.

From the console, you’ll see this login prompt:

But when you enter the correct password, you might get this error:

After a , you’ll receive a prompt like this:

You must re-enter the current password. If your connection closes immediately, then you may have made a mistake re-entering the current password, so try again.

On success, you are then prompted to enter the new password twice:

However, if the session restarts after entering the same new password twice (i.e., you’re sent back login prompt), it typically means that there is a problem with one of the critical files managing your authentication data.

You can attempt to log in again using the console after a .

If the problem persists after resetting the Droplet’s password, consider using the recovery environment to or attempt to resolve the issues with the PAM configuration or file system.

Solutions

Below are some troubleshooting methods and solutions to common SSH authentication errors.

Checking Available Authentication Methods

If you use verbose SSH client output or logging, check that the message outlining authentication methods includes and/or in the list:

If the message doesn’t include the authentication method you want to use, take a look at the configuration file. It’s a common error to accidentally set the value to but to or when logging in as root.

Ensure that the appropriate configuration for your login method is set, then restart the service.

Fixing Key Permissions And Ownership

The OpenSSH server and client require strict on the key files used.

Both the host and the client should have the following permissions and owners:

  • permissions should be
  • should be owned by your account
  • permissions should be
  • should be owned by your account

Client environments should additionally have the following permissions and owners:

  • permissions should be
  • permissions should be

These changes may need to be made through .

Checking SSH Public And Private Keys

If you forget which private key matches which public key, OpenSSH tools and the PuTTY suite of applications provide a way to generate a public key from a private key. You can use that to compare the contents of the file on your Droplets.

To get a public key from a private key in an OpenSSH environment, use the command as follows, specifying the path of the private key. By default, it’s .

This generates a public key, like this:

In PuTTY environments, the command loads a GUI where you can use the Load action to import the private key file. In PuTTY, this is normally stored in format, and you need to know the location of the file.

Once you import the key, the window contains a Public key for pasting into OpenSSH authorized_keys file section with a similar-looking sequence. If you select that text and paste it into a file, it collapses the characters that it shows, and produce the public key.

You can ignore the comment following the public key (which is ) as it may differ from your generated key comment.

In both cases, make sure this public key is included as a line in your file on the server, and add it if not.

OpenSSH 7 And Deprecated Key Algorithms

On systems with OpenSSH 7 (FreeBSD and CoreOS, by default), any older DSA-based keys are not supported for authentication. The key is considered weak and using more modern key algorithms is strongly recommended.

Consequently, the best solution is to generate more modern keys and update your existing hosts to allow the new keys. However, as a workaround, you can set the directive to in your file.

Как использовать SSH клиенте в Windows 10?

Чтобы запустить SSH клиент, запустите командную строку или . Выведите доступные параметры и синтаксис утилиты ssh.exe, набрав команду:

Для подключения к удаленному серверу по SSH используется команда:

Если SSH сервер запущен на нестандартном порту, отличном от TCP/22, можно указать номер порта:

Например, чтобы подключиться к Linux хосту с IP адресом 192.168.1.202 под root, выполните:

При первом подключении появится запрос на добавление ключа хоста в доверенные, наберите yes -> Enter (при этом отпечаток ключа хоста добавляется в файл C:\Users\username\.ssh\known_hosts).

Затем появится запрос пароля указанной учетной записи, укажите пароль root, после чего должна открытся консоль удаленного Linux сервера (в моем примере на удаленном сервере установлен CentOS 8).

С помощью SSH вы можете подключаться не только к *Nix подобным ОС, но и к Windows. В одной из предыдущих статей мы показали, как настроить OpenSSH сервер на Windows 10 и подключиться к нему с другого компьютера Windows с помощью SSH клиента.

Если вы используете SSH аутентификацию по RSA ключам (см. пример с настройкой SSH аутентификации по ключам в Windows), вы можете указать путь к файлу с закрытым ключом в клиенте SSH так:

Также вы можете добавить ваш закрытый ключ в SSH-Agent. Сначала нужно включить службу ssh-agent и настроить ее автозапуск:

Добавим ваш закрытый ключ в базу ssh-agent:

Теперь вы можете подключиться к серверу по SSH без указания пути к RSA ключу, он будет использоваться автоматически. Пароль для подключения не запрашивается (если только вы не защитили ваш RSA ключ отдельным паролем):

Еще несколько полезных аргументов SSH:

  • – сжимать трафик между клиентом и сервером (полезно на медленных и нестабильных подключениях);
  • – вывод подробной информации обо всех действия клиента ssh;
  • / – можно использовать для проброса портов через SSH туннель.

SSHRC

Если файл ~/.ssh/rc существует, он будет выполняться после файлов определения переменных среды, но перед запуском оболочки пользователя или команды. Если используется подмена Х11, то на его стандартный ввод будет передана пара «proto cookie», также ему будет доступна переменная среды DISPLAY. Сценарий должен вызывать xauth(1) самостоятельно для добавления cookie X11.

Основная цель этого файла состоит в выполнении процедур инициализации, необходимые прежде, чем станет доступным основной каталог пользователя. AFS — пример такой среды.

Этот файл будет, вероятно, содержать блок аналогичный следующему:

if read proto cookie && ; then
if ; then
 X11UseLocalhost=yes
echo add unix:'echo $DISPLAY
| cut -c11-' $proto $cookie
else
 X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q -
fi

Если этот файл отсутствует, то выполняется /etc/ssh/sshrc, а если отсутствует и он, то для добавления cookie используется xauth.

Особенности протокола SFTP

Протокол SFTP (Secure File Transfer Protocol , Secure FTP или SSH FTP) это расширение протокола SSH, являющимся стандартом мира UNIX/Linux систем. Хотя с точки зрения пользователей он похож на FTP, но на самом деле это абсолютно другой протокол, не имеющий с FTP ничего общего. Данные между клиентом и сервером передаются по порту 22 через SSH туннель.

Основные преимущества протокола SFTP:

  • Передача файлов и команд происходит внутри защищенной SSH-сессии;
  • Для передачи файлов и команд используется одно соединение;
  • Поддержка символических ссылок, функций прерывания, возобновления передачи, удаления файла и пр;
  • Как правило, на каналах, где FTP работает медленно или с перебоем, SFTP-соединение работает более надежно и быстро;
  • Возможность аутентификации с помощью SSH ключей.

Не нужно путать протоколы SFTP и FTPS. FTPS – это по сути обычный FTP с SSL сертификатом, а SFTP – это передача FTP данных и команд внутри SSH.

Описание «OpenSSH server for Windows»

«OpenSSH server for Windows» является бесплатным вариантом SSH сервера (Free SSH server), который предназначен для тех, кто не хочет полностью устанавливать Cygwin окружение, занимающее около 700-900 МБ. Cygwin — это вроде Wine в Linux.

Представленная здесь компиляция «OpenSSH server for Windows» — это в каком-то роде продолжение проекта «OpenSSH for Windows» (http://sshwindows.sourceforge.net/), который «заглох» ещё с 2004-го года на версии «3.81p1-1 / 9 July 2004»

Представленный здесь «OpenSSH server for Windows» всегда собирается в самой свежей среде Cygwin с такой конфигурацией:

OpenSSH has been configured with the following options:
                     User binaries: /bin
                   System binaries: /sbin
               Configuration files: /etc/ssh
                   Askpass program: /usr/sbin/ssh-askpass
                      Manual pages: /share/man/manX
                          PID file: /var/run
  Privilege separation chroot path: /var/empty
            sshd default user PATH: /bin:/usr/sbin:/sbin
                    Manpage format: doc
                       PAM support: yes
                   OSF SIA support: no
                 KerberosV support: no
                   SELinux support: no
                 Smartcard support:
                     S/KEY support: no
              MD5 password support: yes
                   libedit support: no
  Solaris process contract support: no
           Solaris project support: no
       IP address in $DISPLAY hack: yes
           Translate v4 in v6 hack: yes
                  BSD Auth support: no
              Random number source: OpenSSL internal ONLY
             Privsep sandbox style: rlimit
 
              Host: i686-pc-cygwin
          Compiler: gcc
    Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-strong -Wno-attributes
Preprocessor flags:
      Linker flags:  -fstack-protector-strong
         Libraries: -lcrypto -lz  /usr/lib/textreadmode.o -lcrypt
         +for sshd:  -lpam -ldl
 
PAM is enabled. You may need to install a PAM control file
for sshd, otherwise password authentication may fail.
Example PAM control files can be found in the contrib/
subdirectory

Свежую версию сборки OpenSSH под Windows всегда можно будет найти на этой странице, где также можно сообщить об ошибках в работе «OpenSSH server for Windows» или задать вопрос по установке/настройке OpenSSH сервера (почитайте HOWTO.txt в каталоге установки).

Известные проблемы с «OpenSSH server for Windows»

Проблемы с кодировкой. Данная версия «OpenSSH for Windows» «заточена» под использование кодировки CP866 (OEM 866), т.е. под русскоязычный Windows. Тем не менее некоторые программы, например «ls -l«, могут выдавать крякозябры.

При подключении в клиенте нужно указывать кодировку CP866 (OEM 866):

  • PuTTY: Window -> Translation -> Remote character set -> cp866
  • Bitvise Tunnelier: Terminal -> Encoding -> OEM 866
  • FileZilla: успешно выполняет автоопределение

Если в ОС, где установлен сервер, используется иная кодировка, тогда укажите её в переменной LC_ALL, в файле /etc/bash.bashrc, а также используйте соответствующую кодировку в клиенте.

Инструменты для анализа безопасности SSH

Программные продукты и настройки со временем меняются. Поэтому полезно регулярно их сканировать.

Lynis

Универсальный инструмент безопасности с открытым кодом для тестирования безопасности систем Linux. Он проверит все, что может, от загрузчика до сервера. Он бесплатный и написан с помощью shell script. Lynis работает в самой системе, поэтому может просматривать как файлы конфигурации, так и фактически загруженную конфигурацию. Он включает в себя несколько тестов для OpenSSH и его конфигураций, включая параметры безопасности. Результаты или возможные улучшения отображаются на экране, что позволяет непосредственно приступить к действиям и начать усиливать безопасность системы.

Скачайте утилиту с GitHub или с сайта. Используйте инструкцию, чтобы быстрее понять, с чего начать работу.

ssh-audit

Несмотря на то, что инструмент ssh-audit немного устарел, его стоит иметь в своем арсенале. Вместо тестирования на самом хосте, он может подключаться к SSH-серверу через сеть. Он выполняет тестирование на выбранной системе и просматривает полученные ответы, на основании которых узнает о системе и сервере SSH. Он даже узнает о конкретных уязвимостях и может предупредить о них. Загрузите инструмент через GitHub и попробуйте применить.

Чтобы найти больше информации о других инструментах, читайте раздел «Сканеры конфигурации безопасности Linux».

Sshd_config: Конфигурационный файл сервера OpenSSH

Вы можете изменить настройки сервере OpenSSH в конфигурационном файле %programdata%\ssh\sshd_config.

Например, чтобы запретить SSH подключение для определенного доменного пользователя (и всех пользователей указанного домена), добавьте в конце файле директивы:

DenyUsers winitpro\admin@192.168.1.10
DenyUsers corp\*

Чтобы разрешить подключение только для определенной доменной группы:

AllowGroups winitpro\sshadmins

Либо можете разрешить доступ для локальной группы:

AllowGroups sshadmins

Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.

DenyGroups Administrators

Следующие директивы разрешают SSH доступ по ключам (доступ к Windows через SSH по ключам рассмотрим подробно в следующей статье) и по паролю:

PubkeyAuthentication yes
PasswordAuthentication yes

Вы можете изменить порт, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.

После любых изменений в конфигурационном файле sshd_config нужно перезапускать службы sshd:

Использование пароля

Начнем с инструкции о том, как подключиться к удаленному серверу через SSH по логину и паролю. Это самый простой способ. Хостер предоставляет вам IP-адрес, логин и пароль. Этого достаточно для того, чтобы установить соединение с удаленным сервером.

Подключение на Windows

Моя основная система — Windows. Раньше для подключения к серверу через SSH я пользовался сторонней утилитой PuTTY, потому что в операционной системе не было встроенного компонента. В «десятке» он появился, так что теперь можно подключаться к SSH через командную строку (cmd).

Чтобы включить встроенный в систему OpenSSH:

  1. Откройте «Параметры» (Win + I) и перейдите в раздел «Приложения».
  2. Выберите опцию «Управление дополнительными компонентами».
  3. Нажмите «Добавить компонент».
  4. Выберите в списке OpenSSH Client и нажмите «Установить».
  5. После завершения установки перезагрузите систему.

Теперь разберемся, как подключиться к SSH через cmd. Запустите командную строку и выполните запрос вида ssh root@185.104.114.90.

Значение root — логин для подключения, вы получили его в письме при создании сервера. 185.104.114.90 — IP-адрес сервера. Его можно посмотреть в панели управления сервером или в том же письме, которое прислал хостер. У команды может быть также дополнительный параметр -p, после которого прописывается номер порта. По умолчанию используется порт 22. Если у вас настроен другой порт, нужно явно его указать, — например, полный адрес может выглядеть так: ssh root@185.104.114.90 -p 150.

После выполнения команды клиент SSH предложит добавить устройство в список известных. Введите в командной строке yes и нажмите на Enter. Затем укажите пароль для доступа к серверу. На этом подключение завершено — теперь все команды будут выполняться на удаленной машине, к которой вы подключились.

На версиях младше Windows 10 1809 нет встроенной поддержки протокола OpenSSH. В таком случае понадобится сторонняя утилита. Смотрим, как через PuTTY подключиться по SSH:

  1. Запустите PuTTY.
  2. На вкладке Session укажите Host Name (IP-адрес сервера), Port (по умолчанию 22, но если вы в конфигурации сервера указали другой порт, нужно задать его номер).
  3. Убедитесь, что тип соединения установлен SSH.
  4. Нажмите на кнопку Open, чтобы подключиться.

Если вы ввели правильные данные, появится окно консоли, в котором нужно указать логин и пароль для подключения к серверу. При первом запуске также отобразится запрос на добавление устройства в список известных.

Подключение на Linux и macOS

Теперь посмотрим, как подключиться по SSH через терминал на Linux. Для этого не требуется установка дополнительных компонентов, все работает «из коробки».

  1. Запустите терминал. Обычно для этого используется сочетание клавиш Ctrl+Alt+T. Найти терминал также можно по пути «Главное меню» — «Приложения» — «Система».
  2. Выполните команду для подключения. Синтаксис такой же, как на Windows, — ssh root@185.104.114.90. Если порт не стандартный, то нужно явно его указать: например, ssh root@185.104.114.90 -p 150. Вместо root вы указываете свое имя пользователя, а вместо 185.104.114.90 — IP-адрес своего сервера.
  3. Если хост и порт указаны верно, на следующем шаге появится запрос на ввод пароля. При первом подключении также будет предложение добавить новое устройство в список известных. Для этого введите yes и нажмите на клавишу Enter.

На этом подключение завершено. Теперь все команды, которые вы вводите в терминале, будут выполняться на удаленной машине.

Если IP-адрес или порт указаны неверно, то на экране появится сообщение об ошибке — Connection Refused. Это может также говорить о том, что доступ запрещен брандмауэром на удаленном сервере (если вы его не отключили). Чтобы разрешить подключение через SSH:

  • на сервере с Ubuntu/Debian выполните команду $ sudo ufw allow 22/tcp;
  • на сервере CentOS/Fedora выполните команду $ firewall-cmd —permanent —zone=public —add-port=22/tcp.

Цифра 22 в синтаксисе — номер порта. Если вы используете другой порт, то укажите его явно.

Если вы знаете как подключиться через SSH на Linux, то справитесь с этой задачей и на macOS. В операционной системе Apple тоже есть встроенный терминал. Синтаксис команды для подключения не меняется: ssh root@185.104.114.90, где root — ваш логин, а 185.104.114.90 — IP-адрес сервера, с которым вы устанавливаете соединение. 

Running ssh-agent

The command is usually run from initialization scripts at login, such as from on Linux Mint LMDE. Alternatively, any user can configure it to be run from, e.g., the user’s file or .

The agent outputs environment variable settings that this puts in place. The environment variable is set to point to a unix-domain socket used for communicating with the agent, and the environment variable is set to the process ID of the agent. To get the environment variables set in the user’s shell environment, the agent is usually run with something like the following:

The command accepts the following options:

-a bind_address

Forces to bind the Unix domain socket to the given file path, instead of the default socket.

-c

Forces generation of C-shell commands on stdout. By default the shell is automatically detected.

-d

Enables debug mode.

-E fingerprint_hash Specifies which algorithm to use for generating SSH key fingerprints. Valid values include and .

-k

Kills the currently running agent.

-s

Forces generation of Bourne shell () commands on stdout. By default the shell is automatically detected.

-t life

Specifies a maximum number of seconds that identities are kept in the agent. The value is in seconds, but can be suffixed by for minutes, for hours, for days, and for weeks. Without this option, the agent keeps the keys in its memory as long as it runs. This can be overridden when running the ssh-add command.

OpenSSH Portable Release

Normal OpenSSH development produces a very small, secure, and easy to
maintain version for the OpenBSD project.

takes that pure version and adds portability code so that OpenSSH can
run on many other operating systems (Unfortunately, in particular
since OpenSSH does authentication, it runs into a *lot*
of differences between Unix operating systems).

The OpenSSH provided here is designed to run on the following Unix
operating systems:

  • AIX
  • HP-UX
  • Irix
  • Linux
  • NeXT
  • SCO
  • SNI/Reliant Unix
  • Solaris
  • Digital Unix/Tru64/OSF
  • Mac OS X
  • Cygwin
  • … and more are being added all the time.

The portable OpenSSH follows development of the official version, but
releases are not synchronized. Portable releases are marked with a ‘p’
(e.g. 4.0p1). The official OpenBSD source will never use the ‘p’ suffix,
but will instead increment the version number when they hit ‘stable
spots’ in their development.

The following files describe the development efforts of the OpenSSH
portability development team. The release files are signed with the PGP
public key contained in the file RELEASE_KEY.asc on the ftp site. This key is also available through the
key server network.

  • Portability ChangeLog

  • Installation instructions

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector