在 ssh 中禁止显示‘警告:无法访问 tty’

在 ssh 中禁止显示‘警告:无法访问 tty’

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

ssh -T user@server << EOF
cd cs4400/$dest
gcc -o $efile $file
./$efile
EOF

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

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

我知道这在技术上不算什么问题,但它真的超级烦人。我正试着做作业、检查程序的输出等等,而这让一切都变得杂乱无章,我讨厌这样。

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

OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012

服务器上的此版本的 tcsh:

tcsh 6.17.00 (Astron) 2009-07-10 (x86_64-unknown-linux)

服务器上的 ssh 版本如下:

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

答案1

tcsh您的脚本中似乎没有特定内容,因此只需绕过它即可。示例:

ssh -T user@server "/bin/bash -ec 'cd cs4400/$dest ; gcc -o $efile $file ; ./$efile'"

答案2

ssh-T选项禁用本地环境变量的转发。因此,您的 TERM 变量不存在或未定义,在这种情况下,ssh 无法分配正确的伪终端 (pty),这通常意味着您无法使用命令行完成和命令行编辑控件等。您可以尝试使用以下方法补救这种情况: TERM=vt100 ssh -T user@server ...

还可以使用以下方法检查您的环境变量:setset -o

相关内容