Ssh клиент для linux
Установка и настройка сервера SSH в Linux
Secure Shell, т. е. SSH – протокол, обеспечивающий защищённые соединения и передачу данных между двумя удалёнными компьютерами. Изначально создавался на замену таким системам как rlogin и rcp. Как понятно из полного названия протокола, система SSH позволяет соединяться и управлять удалённым узлом (компьютером, маршрутизатором и т. д.), при этом защищая весь передаваемый трафик с помощью высоконадёжного шифрования.
SSH широко применяется администраторами серверов для их настройки и управления, да и обычные продвинутые пользователи — владельцы, например, сайтов или виртуальных серверов активно используют SSH для подключения к своей учётной записи на хостинге и использования командной оболочки сервера.
Сразу после окончания разработки система SSH стала активно трансформироваться в закрытый коммерческий продукт в виде версии SSH2. Но благодаря сообществу GNU версии протокола SSH1 и SSH2 были реализованы в виде открытого и свободно распространяемого ПО openSSH. В Linux-системах используется именно этот метапакет.
Метапакет SSH базово включает в себя сервер SSH (sshd) в качестве програмы-демона, а также несколько утилит: ssh – удаленная регистрация и выполнение команд, scp – передача файлов и ssh-keygen – для генерации пар SSH-ключей.
Установка пакетов SSH
Как уже говорилось система ssh в Linux-системах распространяется в виде составного метапакета, поэтому для установки всех требуемых утилит ssh нужно выполнить всего одну команду:
В Ubuntu
После чего начнется процесс установки
Как видно, менеджер пакетов сам распознает все зависимые и связанные пакеты и установит их. Также, по завершению установки, автоматически будет запущен SSH-сервер в режиме демона. Это можно проверить командой:
$ systemctl status sshd
или:
$ service sshd status даст тот же вывод. Теперь сервер работает с базовыми настройками по-умолчанию.
Настройка SSH
Режим работы SSH-сервера с настройками по-умолчанию хоть и является вполне работоспособным для небольших частных сетей, всё же нуждается в задании некоторых важных параметров для использования на высоконадёжных публичных серверах. Настройки демона хранятся в файле /etc/ssh/sshd_config. Посмотреть его можно командой
В первую очередь следует обратить внимание на следующие параметры: Port, AddressFamily, ListenAddress. Первый глобально задаёт номер порта, через который будет работать соединение и если оставить его стандартным, т. е. 22, то велика вероятность, что он будет слишком часто сканироваться роботами.
Примечание: для задания активации параметра необходимо раскомментировать соответствующую строку — убрать символ «#» в её начале.
Второй параметр задаёт семейство используемых IP-адресов — IPv4 и IPv6. Если, к примеру, используются только адреса IPv4, то очень рекомендуется установить для параметра
Для адресов семейства IPv6 используется значение inet6.
Параметр ListenAddress позволяет задавать порты для отдельных сетевых интерфейсов:
Поскольку реализация openSSH позволяет работать с протоколами SSH1 и SSH2, то разумно отключить использование SSH1, т. к. эта версия является устаревшей. Работа по SSH1 крайне не рекомендуется: Protocol 2
Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей:
Следует заметить, что в таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл etc/.ssh/authorized_keys), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности:
AuthorizedKeysFile etc/ssh/authorized_keys # Для общего файла
AuthorizedKeysFile %h/.ssh/authorized_keys # Файл -> пользователь
Во втором варианте благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя.
Важно также отключать парольный доступ:
Или же, в случае, если всё-таки необходимо использовать доступ по паролю, то обязательно нужно отключать авторизацию по пустому паролю:
Для указания разрешённых или запрещённых пользователей и групп служат директивы DenyUsers, AllowUsers, DenyGroups, и AllowGroups. Значениями для них являются списки имён, разделяемых пробелами, например:
Следует также отключать root-доступ:
Иногда, когда следует задавать мультисерверную конфигурацию, очень удобно использовать алиасы (Aliases), что позволяет настроить сразу несколько режимов доступа (с разными хостами, портами и т. д.) и использовать их, указывая при этом конкретный алиас:
Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в
/.ssh/config. Здесь нужно не спутать с ssh_config! Пример:
Для применения сделанных настроек необходим перезапуск SSH-сервера:
Настройка и использование клиента SSH
Для подключения по к серверу используется команда:
где user_name – имя пользователя в системе, host_name – имя узла, к которому производится подключение, например:
При этом утилита ssh запросит (в зависимости от настроек сервера) логин, пароль или парольную фразу для разблокировки приватного ключа пользователя.
В случае авторизации по ключу, должна быть предварительно сгенерирована пара SSH-ключей — открытый, который хранится на стороне сервера, обычно в файле .ssh/authorized_keys в домашнем каталоге пользователя, и закрытый — используется для авторизации клиента и хранится, как правило, в каталоге .ssh/ домашней директории пользователя. Открытый ключ представляет собой «цифровой слепок» закрытого ключа благодаря которому сервер «знает», кто «свой», а кто «чужой».
Для генерации ключей используется утилита ssh-keygen:
Утилита предложит выбрать расположение ключей (лучше всё оставить по-умолчанию), обычно это каталог
/.ssh/, ввести парольную фразу для закрытого ключа. После чего будут сгенерированы открытый ключ id_rsa.pub и закрытый — id_rsa. Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер. Проще всего этого можно добиться командой:
Теперь можно выполнить подключение командой ssh и запустить защищённый сеанс удалённого управления.
Важно заметить, что использование сгенерированных openSSH-ключей несовместимо с PPK-форматом, используемым по-умолчанию в таких комплексах как PuTTY. Поэтому необходимо конвертировать имеющиеся openSSH-ключи в формат PPK. Удобнее всего это делать с помощью утилиты PuTTY – puttygen.exe.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
6 мин для чтения Команда SSH
Есть ряд SSH-клиентов, доступных как бесплатных, так и коммерческих, при этом OpenSSH является наиболее широко используемым клиентом. Он доступен на всех основных платформах, включая Linux, OpenBSD, Windows, macOS и другие.
В этой статье мы расскажем, как использовать клиент командной строки OpenSSH (ssh) для входа на удаленный компьютер и выполнения команд или выполнения других операций.
Установка OpenSSH клиента
Клиентская программа OpenSSH вызывается ssh и может быть вызвана из терминала. Клиентский пакет OpenSSH также предоставляет другие утилиты SSH, такие как scp и sftp, которые устанавливаются вместе с командой ssh.
Установка клиента OpenSSH в Linux
Клиент OpenSSH по умолчанию предустановлен в большинстве дистрибутивов Linux. Если в вашей системе не установлен клиент ssh, вы можете установить его с помощью менеджера пакетов вашего дистрибутива.
Установка OpenSSH в Ubuntu и Debian
Установка OpenSSH на CentOS и Fedora
Установка OpenSSH клиента в Windows 10
Большинство пользователей Windows используют Putty для подключения к удаленному компьютеру через SSH. Однако последние версии Windows 10 включают в себя клиент и сервер OpenSSH. Оба пакета могут быть установлены через графический интерфейс или PowerShell.
Чтобы найти точное имя пакета OpenSSH, введите следующую команду:
Команда должна вернуть что-то вроде этого:
Как только вы узнаете имя пакета, установите его, выполнив:
В случае успеха вывод будет выглядеть примерно так:
Установка OpenSSH клиента на macOS
MacOS поставляется с клиентом OpenSSH, установленным по умолчанию.
Как использовать команду ssh
Следующие требования должны быть выполнены, чтобы иметь возможность войти в удаленный компьютер через SSH:
- Сервер SSH должен быть запущен на удаленной машине.
- Порт SSH должен быть открыт в брандмауэре удаленного компьютера.
- Вы должны знать имя пользователя и пароль удаленной учетной записи. Учетная запись должна иметь надлежащие привилегии для удаленного входа.
Основной синтаксис команды ssh следующий:
Чтобы использовать команду ssh, откройте свой терминал или PowerShell и введите ssh, а затем имя удаленного хоста:
При первом подключении к удаленному компьютеру через SSH вы увидите сообщение, подобное приведенному ниже.
Каждый хост имеет уникальный отпечаток, который хранится в файле
Введите yes для хранения удаленного отпечатка, и вам будет предложено ввести пароль.
После того, как вы введете пароль, вы войдете на удаленный компьютер.
Если имя пользователя не указано, команда ssh использует текущее имя пользователя системы.
Чтобы войти как другой пользователь, укажите имя пользователя и хост в следующем формате:
Имя пользователя также можно указать с помощью опции -l:
По умолчанию, когда порт не указан, клиент SSH будет пытаться подключиться к удаленному серверу через порт 22. На некоторых серверах администраторы изменяют порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности для сервера за счет снижения риска автоматизированные атаки.
Чтобы подключиться к порту не по умолчанию, используйте опцию -p для указания порта:
Если вы испытываете проблемы с аутентификацией или соединением, используйте опцию -v, чтобы сказать ssh для печати отладочных сообщений:
Чтобы увеличить уровень детализации, используйте -vv или -vvv.
Команда ssh принимает несколько вариантов.
Файл конфигурации SSH
Если вы ежедневно подключаетесь к нескольким удаленным системам через SSH, вы обнаружите, что запоминать все удаленные IP-адреса, разные имена пользователей, нестандартные порты и различные параметры командной строки сложно, если не невозможно.
Клиент OpenSSH считывает параметры, установленные в файле конфигурации для каждого пользователя (
/.ssh/config). В этом файле вы можете хранить различные параметры SSH для каждого удаленного компьютера, к которому вы подключаетесь.
Пример конфигурации SSH показан ниже:
При запуске клиента ssh с помощью команды ssh dev, команда прочитает файл
/.ssh/config и будет использовать сведения о соединении, указанные для хоста dev. В этом примере ssh dev эквивалентно следующему:
Для получения дополнительной информации проверьте статью о файле конфигурации SSH.
Аутентификация с открытым ключом
Протокол SSH поддерживает различные механизмы аутентификации.
Механизм аутентификации на основе открытого ключа позволяет вам войти на удаленный сервер без необходимости ввода пароля.
Этот метод работает путем генерации пары криптографических ключей, которые используются для аутентификации. Закрытый ключ хранится на клиентском устройстве, а открытый ключ передается на каждый удаленный сервер, на котором вы хотите войти. Удаленный сервер должен быть настроен для принятия проверки подлинности ключа.
Если у вас уже нет пары ключей SSH на вашем локальном компьютере, вы можете сгенерировать ее, набрав:
Вам будет предложено ввести безопасную фразу-пароль. Хотите ли вы использовать фразу-пароль, решать только вам.
Получив пару ключей, скопируйте открытый ключ на удаленный сервер:
Введите пароль удаленного пользователя, и открытый ключ будет добавлен в файл authorized_keys удаленного пользователя.
После загрузки ключа вы можете войти на удаленный сервер без запроса пароля.
Установив аутентификацию на основе ключей, вы можете упростить процесс входа в систему и повысить общую безопасность сервера.
Перенаправление порта
Туннелирование SSH или переадресация SSH-порта – это метод создания зашифрованного SSH-соединения между клиентом и серверным компьютером, через который можно ретранслировать сервисные порты.
Пересылка SSH полезна для передачи сетевых данных служб, которые используют незашифрованный протокол, таких как VNC или FTP, для доступа к контенту с географическим ограничением или обхода промежуточных межсетевых экранов. По сути, вы можете перенаправить любой порт TCP и туннелировать трафик через безопасное соединение SSH.
Существует три типа переадресации портов SSH:
Переадресация локального порта
Переадресация локального порта позволяет переадресовать соединение с клиентского хоста на хост сервера SSH, а затем на порт хоста назначения.
Чтобы создать локальную переадресацию портов, передайте опцию -L клиенту ssh:
Опция -f указывает команде ssh запускаться в фоновом режиме, а -N – не выполнять удаленную команду.
Переадресация удаленных портов
Переадресация удаленных портов является противоположностью переадресации локальных портов. Он перенаправляет порт с хоста сервера на хост клиента, а затем на порт хоста назначения.
Опция -L указывает ssh создать перенаправление на удаленный порт:
Динамическая переадресация портов
Динамическая переадресация портов создает прокси-сервер SOCKS, который обеспечивает связь через ряд портов.
Чтобы создать динамическую переадресацию портов (SOCKS), передайте опцию -D клиенту ssh:
Вывод
Для подключения к удаленному серверу через SSH используйте команду ssh, за которой следуют имя удаленного пользователя и имя хоста (ssh username@hostname).
Знание того, как использовать команду ssh, необходимо для управления удаленным сервером.
Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Команда ssh Linux подключение и настройка
ssh ( Secure Shell — «безопасная оболочка») – это протокол прикладного уровня в операционной системе «Линукс», который обеспечивает удаленный доступ управления персональным компьютером. Чаще всего такой протокол используется при удаленном управлении серверами с помощью терминала.
Если вы являетесь администратором на нескольких серверах, обладаете обширными знаниями в области веб-программирования, команда SSH должна быть знакома. Для осуществления поставленных задач в системе «Линукс» применяется сервер, установленный на машине, и клиент, из которого к ней подключаются.
Утилита ssh отличается широким функционалом, дает пользователю большие возможности. С помощью утилиты можно подключиться к серверу, а также передавать файлы, выполнять скрипты удаленным способом, управлять сервером без предварительного ввода пароля.
Синтаксис
Рассмотрим синтаксис команды.
ssh [опция] [пользователь]@[название хоста] [команда]
Стоит отметить, что утилита ssh способна работать с помощью двух версий протокола, они так и называются протокол 1 и протокол 2. Второй вариант является наилучшим, так как поддерживает значительно больше способов шифрования, а также аутентификаций. Именно поэтому протокол 2 применяется пользователями чаще всего.
- «g» — для разрешения удаленной машине пользоваться определенным локальным портом.
- «l» — для изменения/введения имя пользователя в определенной системе.
- «f» — аргумент переводит режим работы в фоновый.
- «n» — для перенаправления классического вывода.
- «p» — для изменения/введения данных о локальном порту SSH, используемом на удаленной машине.
- «q» — для исключения вероятности показа сообщений о возникающих ошибках.
- «v» — для включения специального режима отладки.
- «x» — для отключения перенаправления X11.
- «X» — для включения перенаправления Х11.
- «C» — для включения сжатия.
Представленный выше список является неполным. На самом деле команда ssh поддерживает в разы больше опций, а описанные варианты используются чаще всего. Стоит заметить, что большинство настроек можно водить с использованием файла «ssh/config».
Настройка
Для осуществления поставленной перед пользователем задачи первоначально требуется обратиться к файлу «/etc/ssh/sshd_config». Здесь имеется множество настроек, большинство из которых применяются редко. Именно поэтому рекомендуется рассмотреть те, которые пользователи вводят чаще всего.
Строка Port
Утилита работает согласно стандартным установкам на основе порта 22. Это поведение не является безопасным, так как мошенникам известен этот порт. Они могут организовать атаку Bruteforce, чтобы перебить имеющийся пароль. Требуемый порт задается с помощью строки «Port 22». Потребуется в обязательном порядке изменить показатели порта на необходимые вам данные.
Строка — Protocol 2,1
На сервере команда ssh согласно стандартным установкам используются две версии протоколов. Они предназначены для совмещения. К примеру, если потребуется использование только второго протокола, потребуется раскомментировать (удалить #) строку «Protocol 2,1» и убрать цифру 1.
Запрет входа root через ssh
В команде ssh согласно стандартным установкам разрешается Root-доступ. Данное поведение также небезопасно. Именно поэтому пользователю потребуется обязательно раскомментировать строку:
Если в конфиге нет строчки PermitRootLogin no, необходимо довать ее в конец файла.
Вход только одному пользователю
В файле конфигурации sshd_config можно добавить две директивы:
Они позволяют разрешить пользоваться ssh только конкретным пользователям или группам.
AllowUsers имя пользователя1, имя пользователя2
AllowGroups группа1, группа2
Особенности выполнения приложений Х11
Не каждый современный пользователь знает, что утилиту SSH можно применить для полноценного запуска приложений Х11. Чтобы появилась возможность использования такой функции, потребуется разрешить ее со стороны сервера. Для этих целей необходимо ввести:
Для вступления изменений, внесенных в утилиту ssh, необходим обязательный перезапуск сервиса. Для этого потребуется ввести специальную команду:
service sshd restart
Или можно перезагрузить всю машину:
Примеры
Существует большое количество методов использования утилиты. Большинство из них неизвестны современному пользователю операционной системы Линукс.
Рассмотрим подключение к серверу.
При присоединении с использованием утилиты в командной строке потребуется ввести:
Например, нам надо подключиться к компьютеру в локальной сети debian, под пользователем slon.
ВАЖНО! Вместо доменного имени компьютера в сети можно написать IP-адрес.
Все современные пользователи первоначально присоединяются к удаленной хосту (компьютеру). Только после этого они вводят требуемые команды. Утилита ssh дает возможность выполнить необходимую задачу без обязательного запуска терминала на удаленной машине.
Предположим нам надо запустить команду top на удаленном компьютере.
ssh slon@debian top
К примеру, требуется запустить скрипт bash на удаленном компьютере. Сам файл bash.sh находится на локальном компьютере . Для этих целей необходимо провести перенаправление ввода bash.
ssh slon@debian ‘bash -s’
С использованием утилиты пользователю предоставляется возможность сохранить бекап локального диска на удаленной серверной машине. Для этих целей нужно перенаправлять вывод dd с использованием оператора перенаправления. Далее вывод dd сохраняется в файле copiadiska.img.
sudo dd if=/dev/sdb | ssh slon@192.168.1.7 ‘dd of=copiadiska.img’
Для восстановления прежнего состояния локального диска используется созданная ранее копия. Для этого в командной строке нужно ввести:
ssh slon@192.168.1.7 ‘dd if=copiadiska.img’ | dd of=/dev/sdb»
Стоит отметить, что в данном случае «/dev/sdb» — это название вашего жесткого диска.
При использовании команды ssh для входа в удаленный сервер нередко требуется пароль. Это создает дополнительные неудобства, но дает возможность обезопасить вас от злоумышленников. Несмотря на защиту, пароль можно подобрать.
Наиболее надежным методом аутентификации является использование нескольких ключей RSA. Один из них хранится на ПК, а второй является публичным. Он применяется пользователем при авторизации.
Это поведение весьма просто настроить. Изначально необходимо задать ключ. Для этого потребуется ввести:
ssh-keygen -t rsa
При создании ключа пользователю необходимо ответить на определённый перечень вопросов. Если вы желаете присоединиться к удаленной машине без обязательного введения пароля, в области «Passphare» нужно оставить пустое место.
Далее ключ отправляется на удаленную машину, вводится:
После этого ключ будет сохранен. Если попробовать присоединиться к серверу повторно, вы увидите, что введение пароля уже не требуется.
Стоит отметить, размещать пароли в обыденных текстовых файлах не стоит. Ими могут воспользоваться злоумышленники Но если это потребуется, такой вариант возможен. Чтобы сохранить пароль, необходимо воспользоваться оператором, используемым при перенаправлении Bash. Введите в командной строке:
При запуске команды ssh на экране монитора нередко всплывает приветствие. Допускается его изменение. За такую функцию отвечает специальный файл «/etc/issue». Вам потребуется просто открыть данный файл и указать необходимо приветствие. Для этого вводится команда:
В некоторых случаях пользователю ОС Линукс может потребоваться информация о неудачных попытках подключения к утилите. Вы можете посмотреть IP-адреса, с которых совершалось данное действие.
Все запросы о входах концентрируются в «/var/log/secure».
Чтобы отфильтровывать информацию в терминале по запросу «Failed password» необходимо добавит grep
cat /var/log/secure | grep Failed password
Нередко пользователям требуется запустить определенное приложение с графической оболочкой на удаленном компьютере.
Для осуществления поставленной задачи не нужно использовать VNC, достаточно применить команду ssh. Программа запустится со стороны удаленной машины, пользователю транслируется лишь окно, в котором можно увидеть все, что ему необходимо.
Стоит отметить, что все получаемые данные могут шифроваться. Чтобы такая опция заработала, потребуется включить поддержку со стороны удаленного сервера. Далее выполняется команда, позволяющая загрузить графическую программу. Для этого потребуется ввести в командную строку «ssh -XC user@remotehost «eclipse»».
Нередко при использовании нестабильного соединения с сетью возможно возникновение сбоев в работе утилиты. Если соединение случайным образом было разорвано, потребуется принудительное завершение сессии. Для активации поддержки необходимо добавить в файл:
Теперь можно завершить сессию простой командой:
В завершении можно сказать, что утилита ssh имеет существенно больший функционал, чем это кажется с первого взгляда. Пользоваться такой командой можно как при программировании, так и в повседневной работе.
Ssh клиент для linux
Основным способом удаленного доступа к серверам под управлением операционной системы Linux является подключение по протоколу SSH. Такое соединение является безопасным, так как все передаваемые данные зашифрованы. Для того, чтобы установить SSH-подключение необходимо на удаленной машине (сервере) настроить серверную часть, а на стороне пользователя клиентскую. Существует множество программных реализаций SSH, для операционной системы Linux наиболее распространен пакет OpenSSH, а в качестве клиента для Windows чаще всего используется PuTTY.
Рассмотрим установку и настройку серверной части на примере Ubuntu Server 18.04, затем выполним подключение к серверу из операционных систем Linux и Windows.
Все действия на сервере выполняем под учетной записью обычного пользователя, в нашем случае в системе для примера создан пользователь mihail, а учетная запись root по умолчанию отключена.
1. Установка серверной части
Устанавливаем пакет с помощью команды:
sudo apt install openssh-server
После завершения установки, убедимся, что служба запущена. Введем команду:
systemctl status sshd
Состояние “Active (running)” говорит о том, что служба работает.
Для того, чтобы исключить блокировку входящих подключений брандмауэром, отключим его, так как настройка межсетевого экрана в данной статье не рассматривается. Для этого воспользуемся командой:
sudo ufw disable
На этом этапе вы уже можете подключаться к серверу. С настройками по умолчанию сервер принимает входящие подключения на стандартный порт 22, с аутентификацией по паролю.
2. Подключение по SSH из Linux
Обычно в дистрибутивах Linux клиент OpenSSH установлен по умолчанию и не требует предварительной настройки. Подключение выполняется из окна терминала с помощью команды ssh. В качестве аргументов указываем имя пользователя и IP-адрес удаленного сервера. На нашем тестовом сервере, который мы используем в данном примере, существует только одна учетная запись mihail, именно её и будем использовать для подключения.
При первом подключении необходимо подтвердить добавление публичного ключа сервера в локальную базу, отвечаем “yes”, после чего вводим пароль пользователя, от имени которого выполняется подключение. Если соединение прошло успешно, вы увидите, приглашение командной строки сервера. Теперь все вводимые команды будут выполняться непосредственно на удаленной машине.
3. Подключение по SSH из Windows
Запускаем клиент Putty и устанавливаем параметры соединения. Переключатель “Connection type” переводим в положение SSH, в поле “Host Name” вводим IP-адрес сервера, в поле “Port” оставляем значение по умолчанию 22 и нажимаем Open.
При первом подключении Putty попросит подтвердить, что вы доверяете этому серверу, нажимаем “Yes/Да”
После ввода логина и пароля вы увидите командную строку удаленного сервера.
4. Аутентификация по ключу. Повышаем уровень безопасности
Когда клиент пытается установить защищенное соединение с сервером по протоколу SSH, сервер, прежде чем разрешить подключение, выполняет процедуру аутентификации, то есть проверку подлинности клиента. Как уже было сказано, по умолчанию используется аутентификация по паролю, которая не обеспечивает надежный уровень безопасности, так как всегда есть вероятность подбора. Кроме того, ввод пароля неприменим при использовании SSH подключений в скриптах.
Для решения этих задач существует метод аутентификации по ключу. Его суть заключается в том, клиент генерирует приватный и публичный ключи, затем публичный ключ передаётся на сервер. После этого для подключения к серверу ввод пароля не требуется, так как аутентификация выполняется на основе взаимодействия закрытого и открытого ключей клиента. Для обеспечения безопасности доступ к закрытому ключу должен быть ограничен. Так как закрытый ключ хранится на машине клиента и не передается по сети, такой метод является более защищенным.
5. Настройка аутентификации по ключу из Linux
Генерируем публичный и приватный ключ на клиентской машине используя утилиту ssh-keygen. В процессе выполнения утилита предложит изменить путь к приватному ключу и ввести парольную фразу для дополнительной защиты. Оставляем все параметры по умолчанию нажимая Enter при выводе запросов.
В результате в домашнем каталоге пользователя в папке .ssh, будут сгенерированы два файла id_rsa и id_rsa.pub содержащие закрытый и открытый ключи соответственно.
После этого необходимо открытый ключ передать на сервер, а именно скопировать содержимое файла “id_rsa.pub” в файл “
/.ssh/authorized_keys” на сервере. Воспользуемся самым простым способом, утилитой “ssh-copy-id” В качестве параметров указываем логин и IP-адрес сервера, как при обычном подключении. После ввода пароля публичный ключ клиента будет автоматически скопирован на сервер. Выполняем команду:
После выполнения этих действий при подключении к серверу, пароль запрашиваться не будет.
6. Настройка аутентификации по ключу из Windows
Запускаем утилиту PUTTYGEN и нажимаем кнопку “Generate”. Для выполнения генерации необходимо произвольно перемещать указатель мышки по рабочему столу.
После того, как ключи сгенерированы, нажимаем кнопку “Save private key” и сохраняем файл с приватным ключом на диск. Место хранения закрытого ключа может быть произвольным, в дальнейшем в параметрях Putty потребуется указать путь к этому файлу. Далее выделяем и копируем в буфер обмена публичный ключ, отображаемый в верхней части окна.
Передачу публичного ключа на сервер выполним обычным копированием через окно терминала. Открываем Putty и подключаемся к серверу обычным способом.
Создадим в домашнем каталоге файл “.ssh/authorized_keys” и ограничим права других пользователей, так, чтобы доступ к этому файлу имел только владелец.
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
После создания файла запишем в него публичный ключ клиента. На предыдущем шаге публичный ключ был скопирован в буфер обмена. Для записи содержимого буфера обмена в файл воспользуемся командой cat и перенаправлением вывода.
После ввода команды щелкнем правой кнопкой мыши по окну терминала для вставки содержимого буфера обмена. Для завершения ввода нажимаем комбинацию клавиш “Ctrl+D” и отключаемся от сервера.
Далее укажем в параметрах Putty место хранения приватного ключа и снова выполним подключение к серверу.
Теперь для подключения к серверу достаточно ввести только имя пользователя. Если же вы попытаетесь подключиться с другой машины, на которой отсутствует приватный ключ, сервер снова запросит ввод пароля. После того, как аутентификация по ключу настроена, в целях безопасности вы можете изменить конфигурацию сервера и запретить вход по паролю.
What is SSH/SFTP and what is it for? How to configure ssh client for Linux
Here I will briefly describe, what is SSH/SFTP and what is it for, how to configure ssh client for Linux, OSX, Unix, generate keys, and prepare it for use.
There are two ways to control Linux Server on VMware virtual machine because of absence of physical terminal. They are using window VMware vSphere virtual client terminal and SSH secure connection.
When one installs our virtual machine template ore configuring the Linux server, we use (or will use) window VMware vSphere client terminal, since there is no alternative at this stage. Of course, in the future, one can work through it, but it is very uncomfortable. The window is small, there is no advanced editing tools and copy-paste. It is needed to enter everything manually. One can not transfer the file to a virtual machine, etc.
Using ssh client for Linux one can manage the server. Wherein the terminal box may be any size. There all advanced editing tools available, including copy-paste from any other applications running on the computer on which ssh client is running. For example, one can copy the command from this post directly to the server’s terminal window. sftp program enables secure file transfer to/from the virtual machine, which Linux server is running.
From wikipedia: SSH is a network application layer protocol that allows for remote control of the operating system and the tunneling of TCP-connections (for example, to transfer files).
This protocol is similar in functionality to Telnet and rlogin, but, unlike them, encrypts all traffic, including typed passwords. SSH allows to select different encryption algorithms, that allows one to safely pass in unprotected computer network environments of nearly any other network protocol.
To implement SSH secure connection, one needs SSH-server and SSH-client. SSH-server listens for connections from client computers, and, if the connection is established, authenticates and then starts to transfer data. SSH-client is used to access the remote machine and execute commands there. SSH-client, and SSH-servers are available for most operating systems.
Or in other words, using the ssh protocol, one can control Linux server from any remote computer, send commands and data in the secure way, including passwords and other sensitive information.
How to configure ssh client for Linux
SSH client for Linux, MAC OS and Unix is included in the base operating system. On Windows, you have to install ssh client, as a third-party application. How to do it and how to use such an application I have described in posts “SSH client for Windows Bitvise Tunnelier“, “SSH client for the Windows PuTTY” and “PSFTP – SFTP client is PuTTY for Windows“.
Les’s start with launching program Terminal. If this looks unclear, You can read my posts “A few words about the Linux” and “Linux Commands“. You can also simply repeat the following commands without any errors and get the necessary results. Commands follow the sign “$” and are written in italics. The sign “$” we will not type!
We should type following commands (you can copy-paste). In this examples, the user name (login) of the current user is admin.
move into the user’s home folder (typed cd
$ ls -la .ssh (One should check, whether there is subfolder .ssh)
There are two possible answers.
The first one:
ls: .ssh: No such file or directory This folder is missing. One have to create it.
One should type:
$ mkdir -p .ssh – This creates subfolder .ssh
$ chmod 0700 .ssh – This folder is now accessible only for the current user (This is mandatory! Without this SSH client will refuse to work).
$ ls -la .ssh – One should check, what happened.
Must be everything, as in Fig. 1.
Fig. 1. Creating ssh keys folder
Now one need to generate keys for ssh client for Linux. We need a good password for the key. Good password should contain at least 8 characters, including capital and small letters, numbers and some punctuation as -, +, #. When I need a password, I usually open a random English-language news site. Then I choose a paragraph with numbers and write out the first letters of several words before and after the numbers and insert punctuation randomly.
Once the password is ready, press:
$ ssh-keygen -t rsa -C “your_email@example.com”
In quotes Your e-mail address. The program asks where we want to place the keys (user name admin):
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
The path and the file name are correct. Just press Enter. Then we are prompted for a password.
Enter passphrase (empty for no passphrase):
Enter just created good password for the key. Input characters are not displayed when one enters passwords. Then, the program asks to enter the same password again.
Enter same passphrase again:
We enter and get the keys a little bit after. In the folder .ssh should be id_rsa private key and id_rsa.pub public key. Let us make sure that this is so:
Must be everything, as in Fig. 2.
Fig. 2. Creating ssh keys
The Second
folder .ssh already exists, and contains already generated keys, we get the output as in the lower part of Fig. 2.
And now, the final step – copy the public key in the user’s home folder to transfer it to the server:
$ cp .ssh/id_rsa.pub authorized_keys2
Finally, You have to write File authorized_keys2 to the USB-stick. Soon, You will need it to establish secure SSH connection to Linux Server. You will also need it when you install Linux server from our virtual machine template. The installer will place the file in the its location and will give the necessary access rights permissions.
By default, SSH server is installed and starts on any distro Linux. And ssh server is configured (at least, Red Hat/Cent OS Linux), the way, that in order to establish secure ssh connection from the client, it is enough to enter correct user name and password. This configuration makes the server is potentially exposed to brute force attacks. If one look at any Linux server logs, one can see that somebody is constantly trying to guess the password to login to the server via ssh. At least everyone knows one username (login) as root (superuser). Although there are many attempts to login with other user names.
Therefore, the Linux Server based on the our virtual machine is designed the way, that registration via ssh is allowed only for users who do not have root privileges and whose public key is located on a server in file authorized_keys2. If one have to to execute commands as root, one must use the sudo or su commands (see my post “Linux commands. The very short description“).
So, in this post I have briefly described, what is SSH/SFTP and what is it for, how to configure ssh client for Linux, OSX, Unix, generate keys, and prepare it for use.