«Сервер отказался выделить pty» - как смонтировать устройства автоматически?

Я использовал этот ящик ubuntu 16.04, размещенный в vSphere, каждый рабочий день в течение последних полугода. Подключаюсь к нему из винды с помощью putty / kitty. Сегодня меня встретило сообщение, подобное тому, что было в этот вопрос .

Я не уверен, чем это было вызвано. Вот сообщение:

Authenticating with public key "imported-openssh-key"
Server refused to allocate pty
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64)

                                                                   * Documentation:  https://help.ubuntu.com
                                                                                                             * Management:     https://landscape.canonical.com
                                                                                                                                                               * Support:        https://ubuntu.com/advantage

                                                                                                                                                                                                             0 packages can be updated.
                                                                                                                                                                                                                                       0 updates are security updates.

Я сохранил форматирование в том виде, в каком оно было распечатано.

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

mount devpts /dev/pts -t devpts

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

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

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

Обновление

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

Чтобы следовать ответ Филипе .

Запуск gzip -dc /boot/initrd.img-$(uname -r) | cpio -i --quiet --to-stdout init | grep devpts дает

mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true

Running gzip -dc /boot/initrd.img-$(uname -r) | cpio -i --quiet --to-stdout scripts / init-bottom / udev | grep move дает

# move the /dev tmpfs to the rootfs
mount -n -o move /dev ${rootmnt}/dev

Запуск с "отладкой" переключатель дает этот вывод .

Что еще я могу сделать, чтобы найти основную причину проблемы?

Регенерация с помощью sudo update-initramfs -c -k $ (uname -r) не произвел никаких видимых изменений после перезагрузки.

Это то, что я вижу в mtab до и после монтирования устройств вручную:

>sudo cat /etc/mtab | grep devpts
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
>sudo mount devpts /dev/pts -t devpts
>sudo cat /etc/mtab | grep devpts
devpts /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0
2
задан 12 April 2018 в 06:37
3 ответа

Файловая система / dev / pts обычно монтируется с помощью initrd (также известного как initramfs) в Ubuntu.

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

Вы можете найти его в / boot с именем initrd.img- *, где последняя часть соответствует версия ядра.

Это сжатый с помощью xz архив cpio.

Вы можете заглянуть внутрь сценария "init", который запускается впервые при монтировании, используя следующую команду.«Grep» в конце этого файла смотрит на строку, которая монтирует devpts:

$ xz -dc /boot/initrd.img-$(uname -r) | cpio -i --quiet --to-stdout init | grep devpts
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true

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

$ xz -dc /boot/initrd.img-$(uname -r) | cpio -i --quiet --to-stdout scripts/init-bottom/udev | grep move
# move the /dev tmpfs to the rootfs
mount -n -o move /dev ${rootmnt}/dev

Если вы хотите извлечь все содержимое initrd, вы можете использовать:

# First go to an empty directory
$ mkdir -p /tmp/extract_initrd
$ cd /tmp/extract_initrd
$ xz -dc /boot/initrd.img-$(uname -r) | cpio -id

А затем исследовать это дерево ...

Если кажется, что что-то не так с вашим initramfs, вы можете попытаться сгенерировать его заново с помощью команды update-initramfs , например так:

$ sudo update-initramfs -c -k $(uname -r)

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

Другая возможность - включить ведение журнала отладки в initrd. Для этого добавьте «отладку» в командную строку ядра и перезагрузитесь. Затем после загрузки системы просмотрите файл /run/initramfs/initramfs.debug, который будет содержать сообщения, напечатанные сценариями initrd. См. здесь для получения дополнительной информации об отладке initramfs.

1
ответ дан 3 December 2019 в 09:57

Когда я получал «Сервер отказался выделить pty», это была гораздо более простая проблема: мой SSH-сервер имел параметр «PermitTTY», установленный на «нет». (В последних версиях OpenSSH эта строка обычно закомментирована, потому что по умолчанию задано «да». Пока она не установлена ​​вручную на «нет», все будет в порядке.)

Используйте свой любимый редактор, чтобы дважды - проверьте свой файл sshd_config.

sudo nano /etc/ssh/sshd_config

Убедитесь, что строка «PermitTTY» отсутствует, закомментирована или вручную установлена ​​на «да», затем перезапустите сервер SSH.

sudo service sshd restart

Это может быть все, что вам нужно.

2
ответ дан 3 December 2019 в 09:57

У меня была аналогичная проблема на https://serverfault.com/a/934030/33095

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

sudo mount -o remount /dev/pts
sudo grep devpts /proc/mounts

devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
1
ответ дан 3 December 2019 в 09:57

Теги

Похожие вопросы