You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RPi3 Raspbian Stretch下SSH向TTY1传输登录输入的问题

嘿,我来帮你搞定这个树莓派tty1登录的问题!

首先得搞懂你遇到的核心问题:你直接往/dev/tty1写字符的操作,只是把内容显示在屏幕上而已,负责处理登录的getty/login进程根本没把这些当成用户输入。这就像你在屏幕上贴了一张写着“pi”的纸条,系统不会认为你真的敲了键盘。login是从终端的输入队列读取数据的,不是从输出流里拿,所以单纯的echo操作自然触发不了密码输入环节。

下面给你几个可行的解决方案,挑适合你的来用:

方案1:用expect+openvt自动完成整个登录流程

这个方法能模拟真实的键盘输入,自动帮你输入用户名和密码:

  1. 先装expect工具:
sudo apt-get install expect
  1. 写个小脚本(比如叫auto_login_tty1.exp):
#!/usr/bin/expect -f
set timeout 10
# 在tty1启动login进程
spawn openvt -s -w -c 1 login
# 等待登录提示
expect "login:"
# 发送用户名pi+回车
send "pi\r"
# 等待密码提示
expect "Password:"
# 替换成你的pi用户密码,再发送回车
send "你的pi密码\r"
# 保持会话交互
interact
  1. 给脚本加执行权限:
chmod +x auto_login_tty1.exp
  1. SSH远程执行就行:
sudo ./auto_login_tty1.exp

方案2:用kbd工具模拟真实按键

kbd包里的sendkey能直接给tty发送键盘事件,相当于真的按了键盘:

  1. 先装kbd:
sudo apt-get install kbd
  1. 发送用户名和回车到tty1:
sudo sendkey -s /dev/tty1 pi
sudo sendkey -s /dev/tty1 return

之后再发送密码和回车:

sudo sendkey -s /dev/tty1 你的pi密码
sudo sendkey -s /dev/tty1 return

方案3:直接切换tty并su(快速登录)

如果只是想跳过登录提示直接在tty1进入pi用户,用这个更简单:

sudo chvt 1 && echo "你的pi密码" | sudo su - pi

这个命令会先切到tty1,然后自动完成su登录,直接进入pi的会话。

最后再啰嗦一句:你之前试的各种echo、printf,本质都是往屏幕输出字符,不是真的模拟输入,所以不管怎么换换行回车都没用,得用能和终端输入队列交互的工具才行。

内容的提问来源于stack exchange,提问作者nejdetckenobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:59:19