我正在尝试使用连接到我的服务器
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。