はじめに
VMからVMにsshでファイル送信をしようとしたらパスワードを聞かれるようになってました。
そこで、VMの設定を追加して解決したのでその方法について説明します。
環境
- VM
- ubuntu20.04 LTS
原因
結論から言うと、syslogに
sda:add missing path
sda:failed to get udev uid: Invalid argument
sda:failed to get sysfs uid: Invalid argument
sda:failed to get sgio uid: No such file or directory
というエラーが出力されており、ここから原因を特定できました。
ですが、ほかにも気を付けたほうが良いことがあるので説明します。
ほかの問題
1. 公開鍵交換
そもそも正しく鍵交換できているか確認してください。
正しくできていない、もしくはわからない時は新しく鍵を生成して鍵交換しなおしてもよいと思います。
2. 権限
秘密鍵ファイルやauthorized_keysファイル、sshディレクトリの権限には気をつけましょう。
秘密鍵、authorized_keysファイルは600、sshディレクトリは700にしておきましょう。
3. ssh設定
SSHサーバーの設定ファイル(通常は/etc/ssh/sshd_config)に、公開鍵認証を無効にする設定があるかもしれません。
"PasswordAuthentication"や"PubkeyAuthentication"といった設定を確認し、公開鍵認証を有効にするように設定してください。
解決
前述したsyslogの
sda:add missing path
sda:failed to get udev uid: Invalid argument
sda:failed to get sysfs uid: Invalid argument
sda:failed to get sgio uid: No such file or directory
このエラーは仮想化環境に依存する問題で、
udev が /dev/disk/by-id を生成するための情報(UUID)が仮想化環境から提供されないためエラーになります。
とのことでした。
これを読んでもちんぷんかんぷんだったので、少し調べてみました。
udivとは
udevは、Linuxカーネル用のデバイス管理ツールです。
主な役割は、「/dev」ディレクトリにあるデバイスノードの管理を行うことです。
UUIDとは
Universally Unique Identifier (UUID) とは、あるリソースを、同じ種類の他のすべてのリソースの中から一意に識別するために使用されるラベルです。
とのことでした。
のでストレージをうまく認識できていないために秘密鍵を取得できず、パスワードを毎回聞かれるようになったのかなと思いました。
ここからようやく解決策について書きたいと思います。
説明が長くなってすみません
まずはVMの電源を落とします。
そしたらVMwareのVMのオプションに以下を追加します。
disk.EnableUUID = "TRUE"
自分のVMの[アクション]から[設定の権限]を選択し、詳細を開きます。
そこから設定の編集を開いて、パラメータの追加をします。
そこで上のオプションを追加してください。
ここまで出来たらVMを起動してあとはsshするだけです。
おわりに
今回はsshするのにパスワードが聞かれるようになった話でした。
最初は戸惑いましたが、解決できた後は自分の知識も広がってよかったと思いました。
ここまで読んでいただきありがとうございました。