ssh の鍵の場所を変える。ために.ssh の場所を変えたい。
ログインを許可していないユーザー (www-data, backup,gitlab-wwwなど)のssh の設定場所にいつも苦労する。
~/.ssh
を変えたいと思った。→できない
ssh のデフォルトディレクトリの.ssh
は、設定で変えられないんですね。
~.ssh
の場所はデフォルで固定のようですね。将来のアップデートで変わるんだろうかと思ったけど、今のところ出来ないってことはセキュリティ懸念とかで固定されてるということでしょうね。
man ssh で調べてみる。
man ssh_config 見た感じでは、変えられないんですよ。
他の方法を探してみる。
そこで、他の方法をあれこれ考えてみる。
代替方法は、上記が候補に上がる。
IdentityFile / UserKnownHostsFile などは変えられる。
.ssh/config の場所を変えることは出来ないが、
グローバル設定 /etc/ssh/config を使えば、デフォルトのファイルの場所を変えられる。
たとえば、次のファイルを変えられれる。
グローバル設定に書いておけば、個人用ファイルを気にせずにかくことができる。
設定例 /etc/ssh/ssh_config
Match user www-data UserKnownHostsFile /etc/confings/www-data/.config/.ssh/known_hosts IdentityFile /etc/confings/www-data/.config/.ssh/id_rsa
~/.ssh/config は変えられない。→ include で代用
~/.ssh/config
を変えられないが、 include は使える
それですね。そうですね。include も一つの方法でした。
./ssh/config には Include ~/.config/ssh/config だけ書いておいたらいいんじゃないですか?
— まー (@maa_0201) July 6, 2021
設定例。
touch /etc/confings/www-data/.config/.ssh/config echo Include /etc/confings/www-data/.config/.ssh/config > ~./ssh/config
Includeを使うことで、ユーザの空間ではなく、グローバルな空間に置く事ができる。
変えたいときって、どうせGitでしょ?
ssh の設定を変えたいときって、git cloneや git を使った CI/CDとかでしょ? GIT_SSH_COMMAND を使えばいいと思うよ。
export GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_example" git clone example
ci の yaml で環境変数を書いておけば、ほとんど場合のCI/CDでの自動テストと自動ビルドのようなgit の鍵トラブルは軽減できますよね。