SSH設定ファイルを$HOME
置き換えるために使用したいと思います。/Users/Me
Host MyHost
HostName 192.168.1.1
IdentitiesOnly yes
User me
IdentityFile "/Users/Me/.ssh/id_rsa"
しかし、私は得た。no such identity: $HOME/.ssh/id_rsa: No such file or directory
答え1
少なくとも私のDebian 10システムでは、ssh_config(5)
マニュアルページに次のように表示されます。
議論身分証明書チルダ構文を使用して、ユーザーのホームディレクトリまたはTOKENSセクションで説明されているトークンを参照できます。
したがって、次のように行を作成$HOME
できます。IdentityFile
IdentityFile "~/.ssh/id_rsa"
または次のように:
IdentityFile "%d/.ssh/id_rsa"
環境変数構文(${HOME}
)のサポートは構成項目でのみ言及されており、記載されていIdentityAgent
ませんIdentityFile
。OpenSSHリリースノートCertificateFile
環境変数構文サポートと設定キーワードがOpenSSHバージョン8.4(2020-09-27にリリース)に追加されましたControlPath
。IdentityFile
Debian 10にはバージョン7.9のみがあります(最新のセキュリティ修正としてバックポートされています)。
したがって、この記事を書いている時点で非常に新しいLinuxディストリビューションを使用しない限り、OpenSSHバージョンは${HOME}
SSH設定ファイルの構文の使用をサポートするには古すぎるかもしれません。
答え2
SSH 構成ファイルの一部のキーワードは環境変数をサポートしますが、ほとんどはサポートしません。幸いなことに、IndentyFileはその一つです。
ファイルで${HOME}
代わりに使用する必要があります。$HOME
tokens
たとえば、を使用してホームディレクトリを参照することもできます%d
。これはによって文書化されましたman ssh_config
。
答え3
-F
追加するには、sshオプション(カスタム設定ファイル)を使用してさらに2つの操作を実行できます。特に、これらの変数は古く、広く使用されているCentOS 7では動作しないためです。これは、ノードにホームディレクトリがない場合に重要です(ただし、$ HOMEは存在しない場所を指します)。たとえば、HTCondorクラスタでは、$_CONDOR_SCRATCH_DIRは$ HOMEではなくユーザーの家です。など。
ファイルパスは相対パスである可能性があるため、目的のディレクトリcd
に移動して相対パスを使用してください。
ssh -F relative_ssh.config servername
二つ目は活用範囲を拡大することです。envsubst
FOO=1 BAR=2 envsubst < in_file > out_file
ただし、多くのSingularityコンテナと同様に、このコマンドはssh
単純なシステム(yum/apt-get install utils-linux
またはyum/apt-get update
Singularityビルド)には存在しません。
最後に、PSAはSSHキーと設定をリモートサーバー/クラスタ/コンピュータに保存するのは危険です。ボリュームがマウントされているコンピュータに誰もsudo権限を持っていないと100%確信していない限り、共有スペースに置かないでください。 OBfuScAt1onは役に立つかもしれませんが(たとえば、誰も名前の付いたフォルダを見ない)、実際には(ベアボーンに存在する)crash-dump-Aug23
タールボールを暗号化するために使用されます。openssl