Ubuntu создать пользователя ssh

Обновлено: 07.07.2024

В наши дни SSH стал методом по умолчанию для доступа к удаленному серверу Linux.

SSH расшифровывается как Secure Shell и представляет собой мощный, эффективный и популярный сетевой протокол, используемый для удаленной связи между двумя компьютерами. И давайте не будем забывать о защищенной части его имени; SSH шифрует весь трафик для предотвращения таких атак, как угон и подслушивание, предлагая различные методы аутентификации и множество вариантов конфигурации.

В этом руководстве для начинающих вы узнаете:

  • Основная концепция SSH
  • Настройка SSH-сервера (в системе, к которой вы хотите получить удаленный доступ)
  • Подключение к удаленному серверу через SSH с клиентской машины (вашего персонального компьютера)

Основы SSH

Прежде чем вы увидите какой-либо процесс настройки, будет лучше пройти через базовую концепцию SSH.

Протокол SSH основан на архитектуре сервер-клиент. «Сервер» позволяет «клиенту» подключаться по каналу связи. Этот канал зашифрован, и обмен регулируется использованием открытых и закрытых ключей SSH.

OpenSSH - один из самых популярных инструментов с открытым исходным кодом, который обеспечивает функциональность SSH в Linux, BSD и Windows.

Для успешной настройки SSH вам необходимо:

  • Установите компоненты сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
  • Установите клиентский компонент SSH на машину, с которой вы хотите подключиться к удаленному серверу. Это обеспечивается пакетом openssh-client, и с ним предустановлено большинство дистрибутивов Linux и BSD.

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

Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.

Обладая этой информацией, давайте посмотрим, как настроить SSH-сервер в Ubuntu.

Настройка SSH-сервера в Ubuntu

Настроить SSH не сложно, для этого нужно всего несколько шагов:

  • Пользователь с привилегиями sudo на серверной машине
  • Подключение к Интернету для загрузки необходимых пакетов.

Опять же, установка SSH-сервера должна выполняться в системе, которую вы хотите использовать как сервер и к которой вы хотите подключиться удаленно через SSH.

Шаг 1. Установите необходимые пакеты

Начнем с открытия окна терминала и ввода необходимых команд.

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

Пакет, необходимый для запуска SSH-сервера, предоставляется компонентом openssh-server из OpenSSH:


Шаг 2: Проверка статуса сервера

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

Вы также можете использовать команды systemd:

Вы должны увидеть что-то подобное с выделенным словом Active. Нажмите q, чтобы вернуться в командную строку.


Если в вашем случае сервис не работает, вам нужно будет активировать его следующим образом:

Шаг 3. Разрешение SSH через брандмауэр

Ubuntu поставляется с утилитой межсетевого экрана под названием UFW (UncomplicatedFirewall), которая представляет собой интерфейс для iptables, который, в свою очередь, управляет сетевыми правилами. Если брандмауэр активен, он может помешать подключению к вашему SSH-серверу.

Чтобы настроить UFW так, чтобы он разрешал требуемый доступ, вам необходимо выполнить следующую команду:

Статус UFW можно проверить, запустив sudo ufw status.

На данном этапе наш SSH-сервер запущен и просто ожидает соединения от клиента.

Подключение к удаленной системе с вашего локального компьютера

В вашей локальной системе Linux уже должен быть установлен клиент SSH. Если нет, вы всегда можете установить его, используя следующую команду в Ubuntu:

Чтобы подключиться к вашей системе Ubuntu, вам необходимо знать IP-адрес компьютера и использовать команду ssh, например:

Измените username на своего фактического пользователя в системе и address на IP-адрес вашего сервера Ubuntu.

Если вы не знаете IP-адрес своего компьютера, вы можете ввести ip a в терминале сервера и проверить вывод. У вас должно получиться что-то вроде этого:

Использование «ip a» для поиска IP-адреса

Использование «ip a» для поиска IP-адреса

Как видно здесь, мой IP-адрес 192.168.2.54. Давайте попробуем подключиться, используя формат имя username@adress.

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

Первое подключение к серверу

Первое подключение к серверу

Сразу же SSH сообщает вам, что хост был добавлен навсегда, а затем запрашивает пароль, назначенный для имени пользователя. Введите пароль и еще раз нажмите Enter.

Хост добавлен, теперь введите пароль

Хост добавлен, теперь введите пароль

И вуаля! Вы войдете в свою систему Ubuntu удаленно!


Теперь вы можете работать в терминале удаленной системы в обычном режиме.

Закрытие SSH-соединения

Чтобы закрыть соединение, вам просто нужно ввести exit, и оно сразу же закроет его, не запрашивая подтверждения.

Закрытие соединения

Закрытие соединения

Остановка и отключение SSH в Ubuntu

Если вы хотите остановить службу SSH, вам понадобится эта команда:

Это остановит службу, пока вы ее не перезапустите или пока система не будет перезагружена. Чтобы перезапустить его, введите:

Теперь, если вы хотите отключить его запуск во время загрузки системы, используйте это:

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

Другие клиенты SSH

Инструмент ssh включен в большинство систем * nix, от Linux до macOS, но это не единственные существующие варианты, вот пара клиентов, которые можно использовать из других операционных систем:

    - это бесплатный SSH-клиент для Windows с открытым исходным кодом. Он полон функций и очень прост в использовании. Если вы подключаетесь к своей машине Ubuntu со станции Windows, PuTTY - отличный вариант. - потрясающий инструмент для пользователей Android. Если вы в пути и вам нужен мобильный клиент для подключения к вашей системе Ubuntu, я настоятельно рекомендую попробовать JuiceSSH. Он существует уже почти 10 лет, и его можно использовать бесплатно.
  • И, наконец, Termius доступен для Linux, Windows, macOS, iOS и Android. У него есть бесплатная версия, а также несколько дополнительных опций. Если у вас много серверов и вы работаете с командами, использующими общие соединения, Termius - хороший вариант для вас.

Заключение

С помощью этих инструкций вы можете настроить SSH в качестве серверной службы в системе Ubuntu, чтобы иметь возможность удаленно и безопасно подключаться к вашему компьютеру для работы с командной строкой и выполнения любых необходимых задач.

Просто создал новый виртуальный сервер Ubuntu, и я в процессе его упрощения для использования в производстве. В настоящее время у меня есть учетная запись root. Я хочу сделать следующее:

  • Создайте нового пользователя (назовем их jim для остальной части этого). Я хочу, чтобы у них был каталог /home/ .
  • Предоставьте доступ к SSH jim .
  • Разрешить jim до su для root, но не выполнять операции sudo .
  • Отключите root SSH-доступ.
  • Переместите SSHd на нестандартный порт, чтобы предотвратить остановку грубых атак.

Моя проблема заключается в первых двух элементах. Я уже нашел useradd , но по какой-то причине я не могу войти в систему как пользователь, созданный с ним через SSH. Нужно ли мне бить SSHd, чтобы это разрешить?

Изменить (как root) /etc/ssh/sshd_config . Добавьте к нему следующее:

Port 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024), который может использоваться только корень. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с правами root.

AllowUsers jim позволяет пользователю jim регистрироваться через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в конфигурационном файле /etc/ssh/sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

SSH очень разборчиво относится к разрешениям каталога и файла. Убедитесь, что:

  1. Каталог /home/username/.ssh имеет разрешение «700» и принадлежит пользователю (не root!)
  2. У пользователя /home /username /ssh /authorized_keys есть разрешение «600» и принадлежит пользователю.

Скопируйте открытый ключ в файл authorized_keys.

НЕТ необходимо добавить пользователя в /etc /ssh /ssh_config.

В /var/log/auth.log будут обнаружены подсказки, почему SSH (или PAM) отклоняет попытку входа в систему. Дополнительные подсказки можно найти, используя параметр -v с клиентом ssh . Несколько распространенных ситуаций, некоторые из которых упомянуты в других ответах:

  • учетная запись пользователя не имеет пароля или в противном случае отключена (см. man passwd ), попробуйте сбросить пароль или проверить содержимое /etc/shadow ).
  • /etc/ssh/sshd_config настроен на запрет входа ( DenyUsers , AllowUsers , PasswordAuthentication , PubkeyAuthentication , UsePAM и т. Д., См. man sshd_config ).
  • оболочка пользователя не указана в /etc/shells .
  • различные проблемы с правами на каталоги или файлы, связанные с работой SSH: /etc/ssh , /home/jim/.ssh , /home/jim/.ssh/* и т. д.

Я бы также рекомендовал использовать adduser (вместо useradd ) для добавления новых пользователей; он немного более дружелюбен к различным настройкам учетной записи по умолчанию.

Пока пользователь не входит в группу admin , они не смогут использовать sudo для root. Чтобы использовать su , вам необходимо установить пароль root ( passwd root ), после чего я рекомендую установить PermitRootLogin=no в /и т.д. /SSH /sshd_config.

Я мог ошибаться, но мне всегда нужно установить демон сервера, прежде чем я смогу подключиться (по крайней мере, на рабочем столе) ssh устанавливается по умолчанию, но это только клиент

эта команда устанавливает сервер

sudo apt-get install openssh-server

Вы можете изменить порт и остановить корневой вход, отредактировав

Для этого требуется перезапустить службу.

sudo service ssh restart

У Jim не будет доступа к SSH, пока вы не установите пароль. Как выполнить root:

Если эта команда возвращает "!" а затем логин отключен для этой учетной записи. Выполняя passwd jim , поскольку root предложит вам новую и подтвержденную строку пароля, после которой команда grep выше должна вернуть хешированную строку, представляющую пароль для jim.

Также убедитесь, что у jim есть оболочка входа, установленная по умолчанию, и домашний каталог, который существует.

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

Используя приведенный выше пример с пользователем jim и предположим член группы jim , поскольку это только группа (проблема groups ) во время входа в систему jim , чтобы найти группы, в которых вы являетесь). В моем файле /etc/ssh/sshd_config у меня была запись AllowGroups sshusers и, следовательно, для добавления jim в sshusers группа. Ниже описано, как это будет достигнуто:

Замените свою группу и пользователя в соответствии с вашей конфигурацией.

По умолчанию могут быть некоторые случаи, когда PasswordAuthentication отключен.

Просьба проверить /etc/ssh/sshd_config и убедиться, что для атрибута PasswordAuthentication установлено значение yes .

Управление пользователями является важной частью безопасности системы. Неэффективные пользователи и управление привилегиями часто приводят множество систем к компрометации. Поэтому важно чтобы вы понимали как защитить ваш сервер с помощью простых и эффективных методик управления пользовательскими учетными записями.

Где суперпользователь?

Разработчики Ubuntu приняли сознательное решение заблокировать административную корневую учетную запись (root) по умолчанию во всех установках Ubuntu. Это не означает, что учетная запись root удалена или к ней нет доступа. Ей просто присвоен пароль, который не совпадает ни с одним возможным шифрованным значением, соответственно, ее невозможно использовать для входа напрямую.

Вместо этого поощряется применение пользователями инструмента с именем sudo для переноса административных обязанностей. Sudo позволяет авторизованным пользователям временно повышать их привилегии, используя их собственный пароль вместо знания пароля, присвоенного суперпользователю. Эта простая и к тому же эффективная методика обеспечивает ответственность для всех действий пользователей и дает административный раздельный контроль над тем, какие действия может выполнять пользователь с указанными привилегиями.

1. Если по какой-то причине вы хотите разрешить учетную запись суперпользователя, просто установите ей пароль:

Sudo запросит ваш пароль, а затем предложит установить новый пароль для root как показано ниже:

2. Для блокирования учетной записи root используйте следующий синтаксис passwd:

3. Вы можете прочитать больше по sudo вызвав ее man страницу:

По умолчанию изначальный пользователь, созданный установщиком Ubuntu является членом группы "admin", которая добавлена в файл /etc/sudoers как авторизованные sudo пользователи. Если вы желаете разрешить другой учетной записи полный доступ суперпользователя через sudo, просто добавьте ее в группу admin.

Добавление и удаление пользователей

Процесс управления локальными пользователями и группами простой и мало отличается от большинства других операционных систем GNU/Linux. Ubuntu и другие дистрибутивы на основе Debian поощряют использование пакета "adduser" для управления учетными записями.

1. Для добавления учетной записи пользователя используйте следующий синтаксис и следуйте подсказкам для указания пароля и опознавательных характеристик таких как полное имя, телефон и пр.:

2. Для удаления пользователя и его первичной группы используйте следующий синтаксис:

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

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

Вы можете захотеть изменить эти значения UID/GID каталога на что-то более подходящее, как, например, значения суперпользователя и, возможно, переместить каталог для предотвращения будущих конфликтов:

3. Для временного блокирования или разблокирования используйте следующий синтаксис:

4. Для добавления или удаления персональной группы используйте, соответственно, следующий синтаксис:

5. Для добавления пользователя в группу, используйте:

Безопасность профиля пользователя

Когда создается новый пользователь, утилита adduser создает, соответственно, новый именной каталог /home/username. Профиль по умолчанию формируется по содержимому, находящемуся в каталоге /etc/skel, который включает все основы для формирования профилей.

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

1. Для проверки прав доступа на домашние каталоги существующих пользователей используйте такой синтаксис:

Следующий вывод показывает, что каталог /home/username имеет доступ на чтение для всех:

2. Вы можете удалить права чтения для всех, используя следующий синтаксис:

Некоторые склоняются к тенденции использовать опцию рекурсии (-R) без разбора, которая изменяет все дочерние каталоги и файлы, хотя это необязательно и может приводить к иным нежелательным последствиям. Родительский каталог сам по себе запретит неавторизованный доступ к любому своему содержимому.

Более эффективный подход к данному вопросу будет в изменении глобальных прав доступа по умолчанию для adduser при создании домашних каталогов. Просто отредактируйте файл /etc/adduser.conf, изменив переменную DIR_MODE на что-то более подходящее, после чего все новые домашние каталоги будут получать корректные права доступа.

3. После исправления прав доступа к каталогам, используя любую из ранее упоминавшихся методик, проверьте результаты используя следующую команду:

Результат ниже показывет, что права на чтение для всех удалены:

Политика паролей

Строгая политика паролей - один из наиболее важных аспектов вашего подхода к безопасности. Много удачных прорывов безопасности использовали для атак простейший взлом (brute force) и подбор паролей по словарю против слабых паролей. Если вы намереваетесь использовать любую форму удаленного доступа с использованием вашей локальной системы паролей, убедитесь, что вы назначили адекватные минимальные требования к паролю, максимальное время жизни пароля и часто проверяете вашу систему аутентификации.

Минимальная длина пароля

По умолчанию Ubuntu требует минимальную длину пароля в 6 символов, также как и некоторые основные проверки на разброс значений. Эти параметры управляются файлом /etc/pam.d/common-password и приведены ниже:

Если вы хотите установить минимальную длину в 8 символов, измените соответствующую переменную на min=8. Изменения приведены ниже:

Базовые проверки на качество и минимальную длину пароля не применяются к администратору, использующего команды уровня sudo для настройки нового пользователя.

Время жизни пароля

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

1. Для простого просмотра текущего статуса учетной записи пользователя используйте следующий синтаксис:

Вывод, приведенный ниже, показывает интересные факты об учетной записи пользователя, а именно что нет никаких примененных политик:

2. Для установки этих значений просто используйте следующую команду и следуйте интерактивным подсказкам:

Далее также пример того, как можно вручную изменить явную дату истечения действия пароля (-E) на 01/31/2008 (американский вариант даты - прим. пер.), минимальный срок действия пароля (-m) на 5 дней, максимальный срок действия (-M) на 90 дней, период бездействия (-I) на 5 дней после истечения срока пароля и период предупреждений (-W) на 14 дней до истечения срока пароля.

3. Для проверки изменений используйте ту же команду, что и упоминалась выше:

Вывод команды ниже показывает новые политики, которые применяются к учетной записи:

Иные соображения безопасности

Многие приложения используют альтернативные механизмы аутентификации, которые могут быть запросто пропущены даже опытными системными администраторами. Поэтому важно понимать и контролировать как пользователи авторизуются и получают доступ к сервисам и приложениям на вашем сервере.

Доступ по SSH заблокированными пользователями

Обычное отключение/блокирование не исключает удаленного подключения пользователя к серверу, если ему предварительно была установлена аутентификация по открытому ключу RSA. Такие пользователи будут получать доступ к консольной оболочке (shell) на сервере без необходимости ввода какого-либо пароля. Не забывайте проверять пользовательские домашние каталоги на файлы, которые позволяют подобный тип авторизации по SSH , например, /home/username/.ssh/authorized_keys.

Удаление или переименование каталога .ssh/ в домашнем каталоге пользователя предотвратит дальнейшую способность аутентификации по SSH .

Аутентификация по внешней базе данных

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

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

В этой инструкции мы рассмотрим как пользоваться ssh, а также ее возможности, о которых вы даже не знали. Скорее всего, вы уже знаете как подключиться к серверу по ssh, но у этой утилиты есть еще много возможностей, таких как передача файлов ssh, подключение без пароля или выполнение скрипта на удаленном сервере. Все это мы и рассмотрим далее в статье. Но начнем с самых основ.

Базовый синтаксис

Синтаксис команды выглядит следующим образом:

$ ssh [опции] имя пользователя @ сервер [команда]

Важно заметить что ssh может работать по двум версиям протокола. Версии 1 и 2. Понятное дело, что версия 2 лучше и поддерживает больше типов шифрования и аутентификации. Больше в этой статье об отличиях протоколов мы говорить не будем и я буду подразумевать что вы используете версию 2.

Опции команды SSH

Теперь давайте рассмотрим самые основные опции команды ssh:

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

/.ssh/config но здесь мы это тоже подробно рассматривать не будем.

Настройка сервера SSH

Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf

Порт ssh

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

Поменяйте значение порта на нужное.

Протокол SSH

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

И приведите ее к такому виду:

Рут доступ

По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:

Доступ только определенного пользователя к SSH

Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого добавьте строчки:

AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3

Здесь User1 и Group1 - пользователь и группа к которым нужно разрешить доступ.

Выполнение X11 приложений

Не все знают но есть возможность использовать ssh для запуска полноценных X11 приложений. Об этом мы поговорим ниже, но чтобы все заработало необходимо разрешить эту возможность на стороне сервера, добавьте такую строчку:

Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:

service sshd restart

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

Основная цель этой статьи - показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному - возможности ssh.

Подключение к серверу

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

Выполнить команду

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

ssh user@host ls

Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

Выполнить локальный скрипт

Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

ssh user@host 'bash -s' < script.sh

Бекап на удаленный сервер и восстановление

Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:

sudo dd if=/dev/sda | ssh user@host 'dd of=sda.img'

Теперь чтобы восстановить состояние диска из сделанной копии выполните:

ssh user@host 'dd if=sda.img' | dd of=/dev/sda

Здесь и выше /dev/sda имя файла вашего жесткого диска.

Аутентификация без пароля

Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации - с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.

Настроить такое поведение очень легко. Сначала создайте ключ командой:

ssh-keygen -t rsa

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

Затем отправляем ключ на сервер:

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

Взять пароль из локального файла

Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да - возможно. Для этого используется оператор перенаправления ввода Bash:

ssh user@host < local_file.txt

Изменить приветствие SSH

При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:

Смотрим неудачные попытки входа SSH

Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

cat /var/log/secure | grep "Failed password for"

Передача файлов по SSH

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

$ scp /адрес/локального/файла пользователь@ хост: адрес/папки

Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

cat localfile | ssh user@host "cat > remotefile"

ssh user@host "cat > remotefile" < localfile

Пойдем еще дальше, вы можете сжимать файлы перед передачей с помощью tar, а потом их сразу же на лету распаковывать:

tar czf - /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/

Такое копирование файлов ssh позволяет отправлять сразу целые папки.

Запуск графических приложений по ssh

Если вам нужно запустить то или иное графическое приложение на удаленной машине необязательно для этого использовать VNC, вы можете обойтись возможностями ssh. Программа будет выполняться на стороне сервера, а вам будет лишь транслироваться окно, чтобы вы могли сделать все что нужно. Причем все данные шифруются. Чтобы эта функция работала, нужно включить ее поддержку на стороне сервера.

Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:

ssh -XC user@remotehost "eclipse"

Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С - сжатие данных.

Завершение сессии SSH

В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:

Другие управляющие символы можно узнать нажав:

Туннели SSH

С помощью SSH туннелей вы можете пробросить порт с удалённого сервера на локальную машину. Это очень полезно, в первую очередь, для разработчиков. Для того чтобы пробросить порт с удалённой машины локальной используйте опцию -L и такой синтаксис:

$ ssh -L локальный_порт :удаленный_адрес : удаленный_порт пользователь@сервер

Например, сделаем удалённую базу данных доступной локально на порту 5555. Для этого выполните подставив свои значения:

$ ssh -N -L 5555:127.0.0.1:3306 root@losst-1

Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт - 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:

$ ssh -N -R 5555:127.0.0.1:3306 root@losst-1

Теперь локальная база данных на порту 3306 будет доступна на удалённом сервере при обращении к порту 5555.

Выводы

Теперь вы знаете как пользоваться SSH. Как видите, технология SSH позволяет сделать намного больше чем можно предположить с первого взгляда, и это еще далеко не все. Какие интересные возможности SSH используете вы при повседневной работе? Поделитесь в комментариях!

имеются файлы конфигурации сборки для python версии 2.4, 2.5, 2.6, 2.7 и 3.2.

README рассказывает, как его использовать.

63 ответа

Изменить (как root) /etc/ssh/sshd_config. Добавьте к нему следующее:

Port 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024 ), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim для входа через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации /etc/ssh/sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

+1: Примечание: эти инструкции по-прежнему применимы к более поздним версиям Ubuntu (например, 13.04). Однако, если вы хотите войти в root, (возможно, вы все еще настраиваете сервер), вы должны установить PermitRootLogin на yes, а также добавить root в AllowUsers. – JRG-Developer 15 October 2013 в 23:57 @ Wolfpack'08 Используйте AllowUsers username1,username2 для ограничения доступа к SSH для этих пользователей. Убедитесь, что sshd перезагружен. Если это не поможет, создайте новый вопрос. – Lekensteyn 30 January 2016 в 22:16

Изменить (как root) /etc/ssh/sshd_config. Добавьте к нему следующее:

Port 1234 PermitRootLogin no AllowUsers jim

Port 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024 ), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim для входа через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации /etc/ssh/sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

sudo service ssh reload

Изменить (как root) /etc/ssh/sshd_config. Добавьте к нему следующее:

Port 1234 PermitRootLogin no AllowUsers jim

Port 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024 ), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim для входа через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации /etc/ssh/sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

sudo service ssh reload

Изменить (как root) /etc/ssh/sshd_config. Добавьте к нему следующее:

Port 1234 PermitRootLogin no AllowUsers jim

Port 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024 ), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim для входа через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации /etc/ssh/sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

sudo service ssh reload

Изменить (как root) / etc / ssh / sshd_config . Добавьте к нему следующее:

Порт 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim войти в систему через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации / etc / ssh / sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

Изменить (как root) / etc / ssh / sshd_config . Добавьте к нему следующее:

Порт 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim войти в систему через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации / etc / ssh / sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

Изменить (как root) / etc / ssh / sshd_config . Добавьте к нему следующее:

Порт 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim войти в систему через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации / etc / ssh / sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

Изменить (как root) / etc / ssh / sshd_config . Добавьте к нему следующее:

Порт 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim войти в систему через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации / etc / ssh / sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

Изменить (как root) / etc / ssh / sshd_config . Добавьте к нему следующее:

Порт 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбирать привилегированный порт (порт 1-1024), который может использоваться только root. Если ваш демон SSH перестает работать по какой-либо причине, приложение-изгои не может перехватить соединение.

PermitRootLogin запрещает вход в систему с прямым корнем.

AllowUsers jim позволяет пользователю jim войти в систему через SSH. Если вам не нужно входить в систему со всего мира, вы можете сделать это более безопасным, ограничив jim на IP-адрес (замените 1.2.3.4 на ваш фактический IP-адрес):

Изменения в файле конфигурации / etc / ssh / sshd_config не применяются немедленно, чтобы перезагрузить конфигурацию, запустите:

+1: Примечание: эти инструкции по-прежнему применимы к более поздним версиям Ubuntu (например, 13.04). Однако, если вы хотите root войти (возможно, вы все еще настраиваете сервер), вы должны установить PermitRootLogin на да , а также добавьте root в AllowUsers . – JRG-Developer 15 October 2013 в 23:57 @ Wolfpack'08 Используйте AllowUsers имя_пользователя1, имя_пользователя2 , чтобы ограничить доступ к SSH для этих пользователей. Убедитесь, что sshd перезагружен. Если это не поможет, создайте новый вопрос. – Lekensteyn 30 January 2016 в 22:16

SSH очень разборчиво относится к разрешениям каталога и файла. Убедитесь, что:

У директории /home/username/.ssh есть разрешение «700» и принадлежит пользователю (не root!). У / home / username / ssh / authorized_keys есть разрешение «600», и будет принадлежать пользователю

Скопируйте свой открытый ключ в файл authorized_keys.

Нет необходимости добавлять пользователя в / etc / ssh / ssh_config.

Я могу подтвердить: на нашем хосте VPS не нужно было редактировать ssh_config. Настройка этого каталога и файла была достаточно. – superjos 6 May 2015 в 12:46 Для меня это должен был быть chmod 755 /home/username/.ssh, иначе это не сработало. – Jim W 3 December 2016 в 02:58

В /var/log/auth.log будут обнаружены подсказки, почему SSH (или PAM) отклоняет попытку входа в систему. Дополнительные подсказки можно найти, используя опцию -v с клиентом ssh. Несколько распространенных ситуаций, некоторые из которых упомянуты в других ответах:

у учетной записи пользователя отсутствует пароль или иначе отключен (см. [F3], попробуйте сбросить пароль или проверить содержимое /etc/shadow). /etc/ssh/sshd_config настроен на запрет входа в систему (DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAM и т. д., см. man sshd_config). оболочка пользователя не указана в /etc/shells. различные проблемы с разрешениями в каталогах или файлах, связанных с работой SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/* и т. д.

Я также рекомендую использовать ssh (вместо useradd) для добавления новых пользователей;

До тех пор, пока пользователь не входит в группу admin, они не смогут useradd установить root , Чтобы использовать su, вам необходимо установить пароль root (passwd root), после чего я рекомендую установить PermitRootLogin=no в /etc/ssh/sshd_config.

Большое спасибо за отличный ответ, особенно «adduser». помогли! – vishal.biyani 21 August 2013 в 16:47

Я мог ошибаться, но мне всегда нужно установить демон сервера, прежде чем я смогу подключиться (по крайней мере, на рабочем столе). ssh устанавливается по умолчанию, но это только клиент

эта команда устанавливает сервер [ ! d1]

sudo apt-get install openssh-server

Вы можете изменить порт и остановить регистрацию root путем редактирования

Для этого вам необходимо перезапустить сервис.

sudo service ssh restart

У Jim не будет доступа к SSH, пока вы не установите пароль. Как root выполнить:

Если эта команда возвращает символ "!" а затем логин отключен для этой учетной записи. Выполнение passwd jim с правами root приведет к появлению новой и подтвержденной строки пароля, после которой команда grep выше должна вернуть хешированную строку, представляющую пароль для jim.

Также убедитесь, что у jim есть логин shell, установленный по умолчанию, и домашний каталог, который существует.

" Если эта команда возвращает " " символ, а затем логин отключен для этой учетной записи " Обратите внимание, это не означает, что вы не можете SSH; только то, что вы не можете сделать это с помощью пароля (по сравнению с вашим открытым ключом). – bfontaine 4 April 2017 в 17:13

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

Используя пример выше с пользователем jim и предположим член группы jim, поскольку это только группа (команда groups, когда вы вошли в систему как jim, чтобы найти группы, частью которых вы являетесь). В моем /etc/ssh/sshd_config файле у меня была запись AllowGroups sshusers и, следовательно, мне нужно было добавить jim в группу sshusers. Ниже описано, как это будет выполнено:

Замените вашу группу и пользователя в соответствии с вашей конфигурацией.

Читайте также: