无法使用 ssh-copy-id - mktemp:无法通过模板创建文件

无法使用 ssh-copy-id - mktemp:无法通过模板创建文件

我有 4 个相同的盒子,我登录到第一个盒子并执行了操作sudo -s,然后ssh-keygen -t rsa生成了密钥并将它们放入/root/.ssh/

然后我输入了密码ssh-copy-id -i /root/.ssh/id_rsa.pub user@machine,然后询问我的密码并且工作正常。

当我转到下一个框时,我收到以下消息:

mktemp: failed to create file via template ‘/home/user/.ssh/ssh-copy-id_id.XXXXXXXXXX’: No such file or directory
mktemp failed

我似乎很困惑,但也很困惑。

任何人都可以帮助解释发生了什么/为什么这在一台机器上有效?

答案1

我没有意识到 ssh-copy-id 是一个脚本,我看了一下。

sudo -s在以非 root 用户身份登录后,我以 root 身份使用 Ubuntu(通过),因此,home 仍设置为/home/user

因此, mktemp 不会创建子文件夹,并且通过硬编码来创建临时文件,因为~/.ssh/tempfile我刚刚在 /home/user 中创建了 .ssh 并且工作正常。

我之前在第一台机器上使用过 SSH,所以这个文件夹已经存在。

答案2

WSL 2 Ubuntu 20.04 apt update 升级后:

ssh-copy-id user@hostname
mktemp failed to create file via template '~/.ssh/ssh-copy-id.XXXXXXXXXX': No such file or directory
ssh-copy-id: ERORR mktemp failed

我能够通过执行以下操作解决上述问题:

sudo vi /usr/bin/ssh-copy-id

改变:

#!/bin/sh

到:

#!/bin/bash

ssh-copy-id现在按预期工作。

答案3

确保 .ssh 文件夹的所有者是您当前的用户而不是 root。

答案4

显然 ssh-copy-id 当它的 mktemp 看到 ~/.ssh 时它认为这意味着 /root/.ssh ,所以你只需要在 /root 下创建目录 .ssh ,这为我解决了这个问题。

相关内容