Установка и настройка сервера 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.
Источник
Создайте нового пользователя SSH на сервере Ubuntu
Просто создал новый виртуальный сервер Ubuntu, и я в процессе его упрощения для использования в производстве. В настоящее время у меня есть учетная запись root. Я хочу сделать следующее:
- Создайте нового пользователя (назовем их jim для остальной части этого). Я хочу, чтобы у них был каталог /home/ .
- Предоставьте доступ к SSH jim .
- Разрешить jim до su для root, но не выполнять операции sudo .
- Отключите root SSH-доступ.
- Переместите SSHd на нестандартный порт, чтобы предотвратить остановку грубых атак.
Моя проблема заключается в первых двух элементах. Я уже нашел useradd , но по какой-то причине я не могу войти в систему как пользователь, созданный с ним через SSH. Нужно ли мне бить SSHd, чтобы это разрешить?
7 ответов
Изменить (как 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 очень разборчиво относится к разрешениям каталога и файла. Убедитесь, что:
- Каталог /home/username/.ssh имеет разрешение «700» и принадлежит пользователю (не root!)
- У пользователя /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 есть оболочка входа, установленная по умолчанию, и домашний каталог, который существует.
Обратите внимание на сообщение lekensteyn для получения информации об изменении настроек сервера SSH.
В моем случае у меня была группа, которой был разрешен доступ, и пользователь не был ею частью. Это решило это для меня.
Используя приведенный выше пример с пользователем jim и предположим член группы jim , поскольку это только группа (проблема groups ) во время входа в систему jim , чтобы найти группы, в которых вы являетесь). В моем файле /etc/ssh/sshd_config у меня была запись AllowGroups sshusers и, следовательно, для добавления jim в sshusers группа. Ниже описано, как это будет достигнуто:
Замените свою группу и пользователя в соответствии с вашей конфигурацией.
По умолчанию могут быть некоторые случаи, когда PasswordAuthentication отключен.
Просьба проверить /etc/ssh/sshd_config и убедиться, что для атрибута PasswordAuthentication установлено значение yes .
Источник
как дать shell и SSH новому юзеру?
Всем привет. В linux серверах я новичок. Есть сервер debian 6. кроме рута пользователей не дали. Создал нового командой adduser. теперь вытаюсь под ним зайти. при подключении просто жду 15 секунд до сообщения о лимите времени подключения. Доступ на сервер осуществляется по SSH. Подсказали что нужно дать юзеру shell и ssh. Подскажите пожалуйста как это сделать? Заранее спасибо.
как именно создал пользователя?
как именно пытаешься зайти?
что в /etc/ssh/sshd_config?
что показывает ssh -vvv user@server?
пользователя создал из под рута командой adduser. никаких параметров не указывал, только adduser newuser. система сказала указать пароль — я указал.
пытаюсь из WinSCP зайти. делаю все так же как с рутом, только пользователя указываю от нового. в итоге он даже не пытается ничего сделать и пароль не спрашивает. просто через 15 секунд пишет что не получается.
в /etc/ssh/sshd_config много всего, что именно там посмотреть, а то копировать суда слишком много будет.
ssh -vvv user@server показывает очень много информации, спросил меня продолжить подключение пли нет. я продолжил, но он выдал:
Warning: Permanently added ‘zebra819,xxx.xxx.xxx.xx’ (RSA) to the list of known hosts. debug2: bits set: 521/1024 debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent Write failed: Broken pipe
(ip сервера я на «х» заменил, для конфиденциальности =))
а пароль задал пользователю при создании?
passwd user
И покажи
grep Password /etc/ssh/sshd_config
а ты руками /etc/passwd не правил? Там есть запись для пользователя вида /bin/bash|/bin/sh|/bin/csh?
# grep Password /etc/ssh/sshd_config PermitEmptyPasswords no #PasswordAuthentication yes # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication, then enable this but set PasswordAuthentication
Когда вызвал команду adduser система сама попросила ввести новый пароль для юзера. 2 раза попросила.
Источник
Создание пользователя и SSH ключей
Команды для создания пользователя в linux:
Посмотреть список групп в системе:
vi /etc/group
Посмотреть список груп конкретного пользователя:
id -Gn vasyapupkin
Создать пользователя:
sudo useradd vasya
Создать пользователя + скелетные директории:
sudo adduser vasya
Или создать пользователя сразу добавив в дополнительную группу newGroup:
sudo useradd -G newGroup vasyapupkin
Добавить пользователя vasyapupkin в группу newGroup:
sudo usermod -a -G newGroup vasyapupkin
добавить пользователю права sudo:
sudo usermod -a -G sudo vasya
//relogin after it
Или
sudo visudo
vasya ALL=(ALL:ALL) NOPASSWD:ALL
Удалить пользователя и его домашнюю директорию с файлами:
userdel -r vasya
Команды для работы с SSH ключами в linux:
Создать SSH пару ключей закрытый и открытый:
ssh-keygen -t rsa -b 4096 -C «user@11.1.2.3»
Скопировать ssh ключи от одного пользователя другому
sudo cp -r /home/USER1/.ssh /home/USER2/.ssh
sudo chown -R USER2:USER2 /home/USER2/.ssh
sudo chmod -R 700 /home/ddudin/.ssh
Сменить пароль на ключ можно с помощью команды
ssh-keygen -p
Если вы знаете пароль пользователя, то процесс можно упростить.
Команда
ssh-copy-id user@server
позволяет скопировать ключ не редактируя файлы вручную.
ssh-copy-id -i id_rsa.pub user@11.1.2.3
МОМЕНТЫ:
Все права на /home/USER/.ssh должны быть 700 и только пользователя владельца
Команды для этого:
sudo chown -R USER2:USER2 /home/USER2/.ssh
sudo chmod -R 700 /home/USER2/
Источник