首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Debian 9.2.1命令线上的自动登录

Debian 9.2.1命令线上的自动登录
EN

Unix & Linux用户
提问于 2017-11-01 05:14:40
回答 3查看 55.2K关注 0票数 16

我刚刚在一台旧笔记本上安装了Debian9.2.1作为廉价的服务器。除了我自己之外,这台计算机并不是任何人都能实际访问的,所以我想在启动时自动登录,这样如果我不得不使用笔记本而不是SSH,我就不必费心登录了。我没有安装图形环境,所以这些方法都不能工作,而且我尝试过多种解决方案,比如https://superuser.com/questions/969923/automatic-root-login-in-debian-8-0-console-only,但是它所做的一切都没有给出登录提示。所以我重新安装了Debian。在没有图形环境的情况下,我能做什么来自动登录?谢谢!

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2017-11-01 09:26:37

编辑您的/etc/systemd/logind.conf,将#NAutoVTs=6更改为NAutoVTs=1

通过创建一个/etc/systemd/system/getty@tty1.service.d/override.conf

代码语言:javascript
复制
systemctl edit getty@tty1

粘贴以下行

代码语言:javascript
复制
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux

启用getty@tty1.service,然后重新启动

代码语言:javascript
复制
systemctl enable getty@tty1.service
reboot

Arch linux文档:getty

票数 33
EN

Unix & Linux用户

发布于 2019-02-15 18:54:06

我只想在这个讨论中补充一下,接受的答案与虚拟终端有关。在我的例子中,我不得不编辑一个单独的服务文件,用于串行终端。这个文件是在/lib/systemd/system/serial-getty@.service中找到的,将--autologin <user>添加到适当的行中的过程也是如此。

代码语言:javascript
复制
[Service]
ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 --autologin root %I $TERM
票数 10
EN

Unix & Linux用户

发布于 2018-12-14 15:41:48

我想补充一个略为彻底的答案,特别是考虑到关于破坏他的系统从@Keelan。

首先,如果您希望只有一个运行程序的tty,并且无法登录到任何其他TTY,那么请编辑您的/etc/systemd/logind.conf,并将#NAutoVTs=6更改为NAutoVTs=1。这样做会阻止你登录终端!

接下来,创建一个目录和一个override.conf文件:

代码语言:javascript
复制
mkdir -p /etc/systemd/system/getty@tty1.service.d
echo "[Service]" > /etc/systemd/system/getty@tty1.service.d/override.conf
echo "ExecStart=" >> /etc/systemd/system/getty@tty1.service.d/override.conf
echo "ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux" >> /etc/systemd/system/getty@tty1.service.d/override.conf

不要重启。请登录到另一个TTY,然后运行以下命令来测试内容,而不是像另一个答案所描述的那样重新启动:

代码语言:javascript
复制
systemctl daemon-reload
systemctl restart getty@tty1.service

如果一切顺利,那就重新启动。

但是如果我想要运行一个程序而不是自动语言呢?然后您将使用以下内容:

代码语言:javascript
复制
mkdir -p /etc/systemd/system/getty@tty1.service.d
echo "[Service]" > /etc/systemd/system/getty@tty1.service.d/override.conf
echo "ExecStart=" >> /etc/systemd/system/getty@tty1.service.d/override.conf
echo "ExecStart=-/path/program -arg1 -arg2" >> /etc/systemd/system/getty@tty1.service.d/override.conf
echo "StandardInput=tty"  >> /etc/systemd/system/getty@tty1.service.d/override.conf
echo "StandardOutput=tty"  >> /etc/systemd/system/getty@tty1.service.d/override.conf

现在请记住,这将在没有bashrc的情况下运行。这意味着,如果您使用类似于screen的内容,那么您就不会得到所有常见的别名/等等。要解决这个问题,请使用上面的标准自动登录,但是将其添加到您的.bashrc中:

代码语言:javascript
复制
[ `tty` == /dev/tty1 ] && /path/program -arg1 -arg2

这意味着程序将只在tty1上运行,但会在下面给出一个完整的shell。

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/401759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档