AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 905093
Accepted
Andrew Savinykh
Andrew Savinykh
Asked: 2018-03-29 15:22:57 +0800 CST2018-03-29 15:22:57 +0800 CST 2018-03-29 15:22:57 +0800 CST

“服务器拒绝分配 pty” - 如何自动挂载 devpts?

  • 772

在过去的半年里,我每个工作日都在使用托管在 vSphere 中的这个盒子 ubuntu 16.04 盒子。我正在使用 putty/kitty 从 Windows 连接到它。今天,我收到了与此问题中类似的消息。

我不确定是什么原因造成的。这是消息:

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

运行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)生成后重新生成没有产生任何可见的变化。

这是我在手动安装 devpts 前后在 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
ubuntu
  • 3 3 个回答
  • 4225 Views

3 个回答

  • Voted
  1. ColdCold
    2018-10-09T05:33:18+08:002018-10-09T05:33:18+08:00

    当我收到“服务器拒绝分配 pty”时,这是一个简单得多的问题:我的 SSH 服务器将“PermitTTY”选项设置为“否”。(在最新版本的 OpenSSH 中,该行通常被注释掉,因为“是”是默认值。所以只要不手动将其设置为“否”,你就可以了。)

    使用您最喜欢的编辑器仔细检查您的 sshd_config 文件。

    sudo nano /etc/ssh/sshd_config
    

    确保“PermitTTY”行不存在、被注释掉或手动设置为“是”,然后重新启动 SSH 服务器。

    sudo service sshd restart
    

    这可能就是你所需要的。

    • 2
  2. Best Answer
    filbranden
    2018-03-29T21:13:25+08:002018-03-29T21:13:25+08:00

    /dev/pts 文件系统通常由 Ubuntu 中的 initrd(又名 initramfs)挂载。

    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. Greg Bray
    2018-10-05T14:41:54+08:002018-10-05T14:41:54+08:00

    我在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

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve