尝试通过 SSH 连接时出现“debug1:read_passphrase:无法打开 /dev/tty:没有此设备或地址”

尝试通过 SSH 连接时出现“debug1:read_passphrase:无法打开 /dev/tty:没有此设备或地址”

我正在尝试使用连接到我的服务器

ssh [email protected] -vv

我明白了

debug1: read_passphrase: can't open /dev/tty: No such device or address

错误或只是

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

当我不使用该-vv选项时。

/dev/tty文件确实存在。我以 root 身份登录,因此我有权访问它。tty命令返回

/dev/console

我已远程连接(使用 Putty)到服务器,并尝试从另一台服务器连接到该服务器。不是一个 cron 作业。我该如何解决这个问题?

答案1

显示什么ls -la /dev/tty?它是世界可读且世界可写的吗?

$ ls -la /dev/tty

crw-rw-rw- 1 root tty 5,0 8月23日 20:58 /dev/tty

$

这就是你应该看到的。如果没有,那就是你的问题。

答案2

当我的私钥格式错误时,我遇到了这个read_passphrase: can't open /dev/tty错误 - 它不是多行,而是作为一行传递,并且您可能遇到任何其他格式问题,例如在开头或结尾忘记了“-”,或者行尾出现错误,例如缺少换行符格式或行尾多了一个字母。

Dockerfile:使用无密码私钥克隆 repo。错误:“身份验证代理”或“read_passphrase:无法打开 /dev/tty”更多细节,主要思想来自在docker文件中将私钥添加到ssh-agent,这个想法又来自Gitlab CI/Docker:ssh-add 不断要求输入密码

答案3

在 Docker 镜像上运行的对我有用的node:11-alpine是修改 SSH 配置,删除密码验证

echo 'PasswordAuthentication no' >> /etc/ssh/ssh_config

您还应该能够通过标志在每个命令上执行此操作-o,例如

ssh -o 'PasswordAuthentication no'

问题是其他命令需要知道它,例如git,在这种情况下您可以设置$GIT_SSH环境变量(类似于此)

export GIT_SSH="ssh -o 'PasswordAuthentication no'"

对我来说,第一个选项似乎是最实用的,在整个系统中默认设置标志。

答案4

就我而言,我需要将以下内容添加到/etc/ssh/ssh_config

PasswordAuthentication yes
KbdInteractiveAuthentication yes
PermitTTY yes

然后重新启动 ssh。

相关内容