ファイルから読み取ったパスを使用してSSHキーファイルの内容を読み取るには?

ファイルから読み取ったパスを使用してSSHキーファイルの内容を読み取るには?

次のファイルの指定されたパスを使用してSSHキーの内容を読み取る必要があります。私のSSH秘密鍵は次のとおりです。~/.ssh/firstname.lastname

Ubuntuで端末を呼び出すと、cat ~/.ssh/firstname.lastname期待される結果が得られます。ただし、テキストファイルからSSHキーへのパスを取得した場合cat: '~/.ssh/firstname.lastname': No such file or directory

path_to_key.txtたとえば、1行のファイルがあります~/.ssh/firstname.lastname

したがって、端末でこれを呼び出すと、cat $(cat path_to_key.txt)上記のエラーメッセージが返されます。

すべてのファイルは同じディレクトリにあり、そのディレクトリでも呼び出しが行われます。

私はなぜこんなに「猫」になれないのか?

ベストアンサー1

猫はすべて機能しましたが、チルダ(~)はコマンドラインで通常処理されているように処理されませんでした。ファイルの内容は内部的に返されますcatcat、チルダ拡張、ワイルドカード、変数拡張などは外部で処理されました。したがって、外側の猫は通過します。言葉~/.ssh/firstname.lastname予想される代わりに名前/path/to/your/home/.ssh/firstname.lastname

2つの解決策:

  1. ファイルを含める絶対パス: 埋め込み path_to_key.txt の代わりに~/.ssh/firstname.lastname(たとえば)/home/you/.ssh/firstname.lastname
  2. 結果コマンド(コマンド置換が発生した後)が次のようにcat外部をラップします。eval再処理済みeval cat $(cat path_to_key.txt)。これは追加の評価階層を提供し、そのキーファイル内のすべてのリダイレクトまたは後続のコマンドだけでなく、目的のチルダ拡張とともに実行されます。

おすすめ記事