
同じボックスが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台のコンピュータで動作するのかを説明するのに役立ちますか?
答え1
私はssh-copy-idがスクリプトであることを知りませんでした。見ました。
sudo -s
root以外のユーザーとしてログインした後、Ubuntuをrootとして使用しているので、homeはまだ/home/user
したがって、mktempはサブフォルダを作成せず、ハードコーディングで一時ファイルを生成します。私~/.ssh/tempfile
は/home/userに.sshを作成しましたが、うまくいきました。
以前は最初のコンピュータでSSHを使用したことがあるため、このフォルダはすでに存在します。
答え2
WSL 2 Ubuntu 20.04 適切なアップデートをアップグレードした後:
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
明らかに mktemp で ~/.ssh を見ると、ssh-copy-id は /root/.ssh を意味すると思うので、/root の下に .ssh ディレクトリを作成すると問題は解決します。