Can't open /dev/tty: No such device or address Error (Linux)

部署运行你感兴趣的模型镜像

前言

由于之前的线上服务器替换过ip地址,导致线下服务器crontab在拉取备份日志时日志里记录了如下问题(ps:在家边解决bug边看我是歌手,很爽啊):



注意:

  1. 查找服务器端问题一定要查看日志,不能靠猜,例如ssh的问题可以多加-vvv参数来具体排查问题


原因

线上服务器进行了ip地址的修改,开始出现Host key verification failed的时候,以为删除自己的know_hosts文件即可,但是没有解决本质问题,所以察看日志很重要

解决方法

mknod -m 644 /dev/tty c 5 0
chmod o+rw /dev/tty

公私钥认证

解决了上面的问题,发现之前由于不清楚原因搞乱了.ssh目录的权限,无法公私钥认证登陆,这里记录一下权限设置:

  • ~/.ssh目录的权限必须是0700
  • ~/.ssh/authorized_keys文件权限必须是0600

后记

《我是歌手》不错啊,哈哈!



您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

在某些系统环境下,启动防火墙(如 `firewalld`)时可能会遇到错误提示: ``` Failed to open /dev/tty: No such device or address ``` 该问题通常出现在非交互式环境中(例如通过 SSH 启动服务、使用脚本调用 `sudo systemctl start firewalld` 或通过容器运行),因为程序尝试访问终端设备 `/dev/tty` 但无法找到有效的终端。 ### 原因分析 - 某些服务或脚本依赖于标准输入(stdin),当它们尝试读取 `/dev/tty` 时会失败。 - 如果使用了带有密码提示的命令(如 `sudo`)且未提供 `-S` 或 `--stdin` 参数,也可能导致此问题。 - 在无头服务器或容器中没有分配 TTY 设备,因此 `/dev/tty` 不可用。 ### 解决方案 1. **避免在无 TTY 环境中使用需要交互的命令** 使用 `echo 'password' | sudo -S` 的方式提供密码输入,确保不会因缺少 TTY 而中断执行[^2]。例如: ```bash echo 'your_password' | sudo -S systemctl start firewalld ``` 2. **修改服务单元文件以禁用 TTY 依赖** 编辑 `firewalld` 的 systemd 单元文件: ```bash sudo systemctl edit firewalld ``` 添加以下内容以禁用对 `/dev/tty` 的访问需求: ```ini [Service] StandardInput=null ``` 3. **检查并更新启动脚本逻辑** 如果是自定义脚本调用了 `firewall-cmd` 或相关命令,应确保其不依赖交互式终端输入。可以将涉及用户交互的部分改为自动确认或配置参数传递。 4. **在容器或自动化部署中配置伪终端(PTY)** 对于 Docker 或 Kubernetes 等环境,在运行命令时可启用伪终端支持: ```bash docker exec -it <container_id> bash ``` 5. **排查 SELinux 或 AppArmor 限制** 安全模块有时会阻止对 `/dev/tty` 的访问,可通过临时禁用安全策略进行测试: ```bash sudo setenforce 0 # 临时关闭 SELinux ``` 6. **日志排查与调试** 查看详细的日志信息有助于定位具体出错位置: ```bash journalctl -u firewalld --since "5 minutes ago" ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值