首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抑制ssh中的“警告:不能访问tty”

抑制ssh中的“警告:不能访问tty”
EN

Stack Overflow用户
提问于 2013-09-17 17:17:28
回答 3查看 5.1K关注 0票数 1

我有一个简短的简单脚本,它编译一个.c文件并在运行tcsh的远程服务器上运行,然后将控制权还给我的机器(这是为了上学,我需要我的程序在实验室计算机上正常工作,但希望在我的机器上编辑它们等等)。它以这样的方式运行命令:

代码语言:javascript
复制
ssh -T user@server << EOF
cd cs4400/$dest
gcc -o $efile $file
./$efile
EOF

到目前为止,它运行良好,但每次我这样做都会发出这样的警告:

代码语言:javascript
复制
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

我知道这在技术上不是个问题,但这太烦人了。我试着做功课,检查我的节目输出等等,这扰乱了一切,我讨厌它。

我正在我的机器上运行这个版本的ssh:

代码语言:javascript
复制
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012

服务器上的这个版本的tcsh:

代码语言:javascript
复制
tcsh 6.17.00 (Astron) 2009-07-10 (x86_64-unknown-linux)

服务器上的这个版本的ssh:

代码语言:javascript
复制
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-05 15:29:01

消息实际上是由shell打印的,在本例中是tcsh。您可以使用

代码语言:javascript
复制
strings  /usr/bin/tcsh | grep 'no access to tty'

以确保它属于tcsh本身。

它与ssh的关系非常松散(本例中的ssh只是触发器,而不是原因)。

您应该要么改变您的方法,而不是使用HERE DOCUMENT。相反,将可执行的custom_script放入/path/custom_script并通过ssh运行。

代码语言:javascript
复制
# this will work
ssh user@dest '/path/custom_script'

或者,只需运行复杂的命令作为一个oneliner。

代码语言:javascript
复制
# this will work as well
ssh user@dest "cd cs4400/$dest;gcc -o $efile $file;./$efile"
票数 1
EN

Stack Overflow用户

发布于 2016-02-28 11:37:49

在OS上,我用ssh -t -t解决了一个类似的问题(Vagrant上的脚本配置)(注意,-t来了两次)。基于ssh BSD手册页的建议:

-T禁用伪终端分配. -t强制伪终端分配.这可以用于在远程计算机上执行基于屏幕的任意程序,这是非常有用的,例如在实现菜单服务时。多个-t选项强制分配tty,即使ssh没有本地tty。

票数 1
EN

Stack Overflow用户

发布于 2021-02-02 14:02:03

如果运行tcsh对您不重要,请指定一个不同的shell,它将工作:

代码语言:javascript
复制
ssh -T user@server bash << EOF
cd cs4400/$dest
gcc -o $efile $file
./$efile
EOF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18855989

复制
相关文章

相似问题

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