key_load_public:在 Ubuntu 15.10 上使用 scp 或 git clone 时格式无效

key_load_public:在 Ubuntu 15.10 上使用 scp 或 git clone 时格式无效

全新安装 Ubuntu 15.10 后,当使用scp或 时git clone,出现以下警告(命令本身没有失败):key_load_public: invalid format

我怎样才能消除这个警告?

更新:这是输出scp -vvv

OpenSSH_6.9p1 Ubuntu-2, OpenSSL 1.0.2d 9 Jul 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to ... [...] port 22.
debug1: Connection established.
key_load_public: invalid format
debug1: identity file /home/alexzeitler/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/alexzeitler/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9p1 Ubuntu-2

答案1

检查文件/Users/alexzeitler/.ssh/id_rsa。里面有什么?它是怎么到那里的?

它应该是你的私钥,不是吗?里面有什么吗/Users/alexzeitler/.ssh/id_rsa.pub?它是有效的公钥吗?

如果您不使用这些键,请删除它们,消息就会消失。如果您以不同的方式使用它们,请将它们移到其他地方。如果它们的格式不同,也同样如此。

公共部分可能已损坏,因此您可以使用以下命令从私有部分重新创建它:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

###hostkeys 可能性 另一种可能性是客户端正在尝试读取 的服务器公钥HostBasedAuthentication。您不允许这样做吗/etc/ssh/ssh_config

这些文件之一可能丢失或损坏:

/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_rsa_key.pub

你的sshd服务器没有抱怨吗?

答案2

Load key "/root/.ssh/id_rsa": invalid format当我在 Dockerfile 中尝试时也遇到了类似的错误:

RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa &&     chmod 600 /root/.ssh/id_rsa

这会导致类似identity file /root/.ssh/id_rsa type -1 invalid format和 的错误read_passphrase: can't open /dev/tty。不要使用echo "${SSH_PRIVATE_KEY}" >> /root/.ssh/id_rsa来传递私钥!

正确的方法是使用

COPY id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa

解决方案解释:我的私钥格式错误 - 它不是多行,而是作为一行传递的,并且您可能遇到任何其他格式问题,例如在开头或结尾忘记了“-”,或者行尾出现错误,例如缺少换行符格式或行尾多了一个字母。

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

相关内容