我有 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 ,这为我解决了这个问题。