Linux сменить пароль ssh

Обновлено: 04.07.2024

у нас есть несколько серверов Red Hat linux в нашей ИТ-среде. Члены моей команды просят меня написать сценарий (предпочтительно сценарий оболочки), чтобы изменить пароль пользователя на каждом из них за один раз, используя SSH.

Я попытался найти решение, но многие из найденных скриптов используют Expect. Мы не ожидаем, установленный на наших серверах, и системные администраторы отказались позволить нам установить его. Кроме того, пользователи не имеют доступа root so passwd --stdin или chpasswd не может быть использован.

есть ли способ написать скрипт, чтобы пользователь мог запустить его и изменить пароль только своего пользователя на всех серверах в списке?

удаленным машинам не нужно ожидать установки. Вы можете установить expect на локальную рабочую станцию или виртуальную машину (virtualbox) или любой *Nix box и написать оболочку, которая вызывает это .ex (expect) скрипт (могут быть небольшие изменения от дистрибутива к дистрибутиву, это проверено на CentOS 5/6):

вам не нужен root-доступ, чтобы использовать passwd .

Это shoud работает просто отлично.

вы должны попробовать pssh (параллельный ssh одновременно).

основываясь на примере squashbuff, я попробовал следующее, что хорошо сработало для меня:

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

другая возможность: измените его вручную на одном сервере. Получите зашифрованный пароль из /etc / shadow. Теперь сделайте что-нибудь вроде этого:

конечно, "encrypted_passwd" - это то, что вы получили из /etc/shadow, где вы вручную изменили пароль. И $HOST_LIST-это список хостов, на которых вы хотите изменить пароль. Это может быть создано просто с помощью:

или, возможно, с файлом (как предлагали другие):

где файл "host_list.txt " имеет список всех систем, в которых вы хотите изменить пароль.

Edit: если ваша версия passwd не поддерживает опцию-p, у вас может быть доступна программа "usermod". Пример выше остается тем же, просто замените "passwd" на "usermod".

кроме того, вы можете рассмотреть полезный инструмент pdsh, что упростило бы приведенный выше пример примерно так:

последний "gotcha", чтобы искать: зашифрованный пароль, вероятно, содержит символ знака доллара ('$') в качестве разделителя полей. Вероятно, вам придется избегать тех, кто находится в вашем цикле for или pdsh (т. е. "$" становится "\$").

установить sshpass на любом сервере, с которого вы хотите выполнить скрипт.

подготовьте текстовый файл, в котором вы должны передать детали, такие как Хоста, Имя Пользователя, пароль и порт. (По вашему требованию).

подготовьте файл сценария, используя ниже подробности.

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

/.ssh / authorized_keys файл на каждом из серверов, в которые они входят.

можете ли вы использовать Perl?

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

Если требуется несколько модулей Perl (Net::OpenSSH:: Parallel, ожидал и их зависимости), установленные на локальном компьютере, на котором запущен скрипт, но ничего на удаленных серверах, где пароль должен быть изменен.

Утилита passwd является консольной, поэтому, чтобы воспользоваться ей, необходимо подключиться к серверу по SSH.

Если на Вашем рабочем компьютере используется ОС на базе GNU/Linux, то, вероятно, Вы уже умеете пользоваться SSH клиентом.

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

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

Все необходимые настройки уже указаны по-умолчанию. Поэтому для подключения к серверу требуется указать только его IP адрес в поле “Host Name (or IP address)”. Если на сервере используется нестандартный порт ( отличный от 22), то его потребуется также указать.

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

После ввода имени пользователя root будет выдано приглашение на ввод пароля.

Обратите, пожалуйста, внимание, что пароль при вводе не отображается!

После того как Вы введете корректный пароль, появится строка ввода команд. На этом этапе Вы подключились к серверу по SSH и сервер готов принимать команды от Вас.

Для серверов с FASTPANEL, после ввода пароля, выводится информация о сервере.

Приступим, к смене пароля, для этого введем в окно PuTTY команду passwd и нажмем Enter. Сервер сообщит нам “Changing password for user root. New password: ” - это означает, что сейчас будет изменятся пароль для пользователя root и сервер ждет от Вас ввода нового пароля.

Вводим новый пароль и нажимаем Enter.

Обратите, пожалуйста, внимание, что пароль при вводе не отображается!

Появиться ответ сервера “Retype new password: ”

Повторяем ввод нового пароля и снова нажимаем Enter. Данная мера предназначена, чтобы Вы не ошиблись в новом пароле.

После корректного ввода пароля второй раз, сервер выдаст информацию, о том что пароль был изменен “passwd: all authentication tokens updated successfully.” И будет задорно мигать зеленым курсором, предлагая повеселиться еще и ввести новую команду.

Если же при повторном вводе пароля Вы допустили ошибку и пароли не совпадают, сервер укажет на эту ошибку “Sorry, passwords do not match.” и предложит повторить попытку ввода пароля.

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

Внимание. Начиная с версии 0.2.14-r8 были внесены изменения в систему безопасности.

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

Конфигурация Порта

Стандартное значение TCP-порта для SSH-доступа (22) может быть изменено в работающем STB (выполняется для каждой STB отдельно) или может быть изменено для целой версии ПО, при создании образа.

MAG2xx (на основе чипсета STMicroelectronics)

    Конфигурация расположена в rootfs: /etc/openssh/sshd_config
Пример для MAG-2xx. Изменение порта для доступа по SHH. Новое значение: 2222. Приведено содержимое файла /etc/openssh/sshd_config.

MAG-3xx (на базе чипсетов Broadcom)

    Конфигурация расположена в rootfs: /etc/rc.d/rcS.d/S60netsrv

Необходимо изменить значение строки dropbear. Например, чтобы изменить порт на значение 2222:
Примечание. Для применения новых настроек на работающем STB, после модификации скрипта, перегрузите STB.

Пример. MAG-3xx. Изменение порта для доступа по SSH. Новое значение: 2222. Приведено содержимое файла /etc/rc.d/rcS.d/S60netsrv.

if [ -e /sbin/dropbear ]; then
if [ ! -e /etc/dropbear/dropbear_rsa_host_key ]; then
mkdir -p /etc/dropbear
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
fi
dropbear -p 2222
fi

MAG-4xx (на базе чипсетов Hisilicon)

    Конфигурация расположена в rootfs: /etc/init.d/S81dropbear

Необходимо в строке TARGET_BIN=/sbin/ dropbear указанного выше скрипта (S81dropbear) добавить новое значение порта в формате -p <Port_number>. Например, чтобы изменить порт на значение 2222: Примечание. Для применения новых настроек на работающем STB, после модификации скрипта, перегрузите STB.

Пример. MAG-4xx. Изменение порта для доступа по SSH. Новое значение: 2222. Приведено содержимое файла /etc/init.d/S81dropbear.

TARGET_DESC="Dropbear (SSH daemon)"
TARGET_BIN="/sbin/ dropbear -p 2222"

if [ -e /sbin/dropbear ]; then
if [ ! -e /etc/dropbear/dropbear_rsa_host_key ]; then
echo "[IM][system init][+][$] HOST KEY not found. Creating host key"
mkdir -p /etc/dropbear
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
fi

if [ $? -eq 0 ]; then
echo "[IM][system init][i][$] Started OK"
else
echo "[IM][system init][!][$] FAILED to start!"
fi
fi

Смена пароля для сборки образа

1. Зайти на приставку по SSH
2. Выполнить и изменить пароль
3. Выполнить копирование содержимого следующего файла:

Для MAG256, 322/324/349/351 -

4. В rootfs, который будет использоваться для последующей сборки образа, заменить содержимое одноименного файла на скопированное содержимое (из п. 3).

Пример. MAG322. Доступ к содержимому файла /etс/passwd после изменения пароля. Новое значение пароля: Qwerty1!

Отключение/включение SSH

Отключение SSH-доступа

Отключение SSH-доступа может быть выполнено в работающем STB отдельно для каждой STB (после этого необходимо перегрузить STB) или выполняется для всей версии ПО, в процессе создания образа.

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

MAG2xx - удалить скрипты etc/rcS.d/S30ssh и /usr/sbin/sshd

Пример. MAG322. Отключение SSH. Содержимое файла /etc/rc.d/rcS.d/S60netsrv

if [ -e /sbin/dropbear ]; then
if [ ! -e /etc/dropbear/dropbear_rsa_host_key ]; then
mkdir -p /etc/dropbear
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

Пример. MAG420. Отключение SSH. Содержимое файла /etc/init.d/S81dropbear.

if [ -e /sbin/dropbear ]; then
if [ ! -e /etc/dropbear/dropbear_rsa_host_key ]; then
echo "[IM][system init][+][$] HOST KEY not found. Creating host key"
mkdir -p /etc/dropbear
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
fi

if [ $? -eq 0 ]; then
echo "[IM][system init][i][$] Started OK"
else
echo "[IM][system init][!][$] FAILED to start!"
fi
fi

Включение SSH-доступа

Для восстановления SSH-доступа на STB необходимо обновить STB на версию ПО с включенным SSH-доступом.

Для включения SSH в новой версии образа ПО необходимо восстановить исходное состояние указанных файлов-скриптов (файлы в исходном состоянии предоставляются в Релизе).

Root-пароль можно легко изменить. Для этого нужен доступ к панели управления ISPmanager/VMmanager или терминалу putty .

Если есть панель ISPmanager и известен текущий пароль

Зайдите в панель под пользователем Root — в правом верхнем углу перейдите в пункт Настройки :


Далее, укажите текущий пароль и дважды новый, нажмите ОК :


Если нет панели ISPmanager

Можно сменить root пароль через терминал. Зайдите на сервер по SSH под пользователем root , напишите команду passwd , после чего дважды введите новый пароль:


Если текущий пароль неизвестен

Можно изменить root через VMmanager — данные для доступа есть в инструкции к серверу.

Перейдите в раздел Виртуальные машины → Пароль :


Укажите новый пароль. После этого сервер будет перезагружен:


Если у вас VMmanager 6, нажмите на Меню - Сменить пароль во вкладке Виртуальные машины .


Если не получается зайти на сервер и установка пароля через VMmanager не помогает, обратитесь в техническую поддержку. Или сбросьте пароль через меню grub при загрузке, для этого потребуется ненадолго выключить сервер. Последний способ подходит для VDS на KVM-виртуализации и выделенных серверов с ОС Debian, CentOS, Ubuntu .

Перезагрузите сервер, при появлении меню grub нажмите «e» .


В конце строки с параметрами ядра добавьте init=/bin/bash .


После чего нажмите F10, и загрузка сервера продолжится.

Далее, чтобы изменить пароль, введите mount -no remount,rw /

Теперь можно задать новый пароль — passwd . После перезагрузки сервера вы можете авторизоваться, используя новый пароль.

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