LoginSignup
0
0

More than 1 year has passed since last update.

.ssh/configまでのパスを変えたかった

Last updated at Posted at 2022-01-31

やりたいこと・問題点

仕事用の.ssh/configで * を多用したことで、プライベートなホストを除外する記述が大変でやりたくない。
sshが参照する.ssh/configを用途別に分けられたらよさそう。

具体的にはHOME変数見て.ssh/configの読むパスが変わらないかなーみたいな。

結果、HOME変数で.ssh/configのパスを変えることはできなかったものの、満足する動作に至ったためここに公開。

(Mac+iTerm環境)

実現策: HOME 変数の書き換え+configの Include

単純に HOME 変数を書き換えてもsshコマンド使用時に参照するconfigまでのパスはユーザホームディレクトリ直下の.ssh/config固定。そういうもののようです。

ところが、.ssh/configで Include 文では ~HOME 変数で展開される。

以下のようなディレクトリ構成/.ssh/configの場合、HOME 変数の内容をもとにssh実行時に参照するconfigを切り替えることが可能。

/Users/taro/
├──.ssh
│   ├──config
│   └──conf.d
│       └──common.conf (例えばプライベートときだけ参照したいconfig)
└──work
    └──.ssh
        └──conf.d
            └──common.conf (例えば仕事のときだけ参照したいconfig)
/Users/taro/.ssh/config
Include ~/.ssh/conf.d/common.conf

上記構成とすると、 ~ を展開したときに読み込まれるファイルが変わるため、sshの動作を切り替えることができるようになる。

  • HOME 変数を書き換えていない場合 (デフォルト時)
    • ssh実行時に /Users/taro/.ssh/config から
      /Users/taro/.ssh/conf.d/common.conf (プライベート用) が読まれる
  • HOME 変数を書き換えた場合 (export HOME=/Users/$USER/work)
    • ssh実行時に /Users/taro/.ssh/config から
      /Users/taro/work/.ssh/conf.d/common.conf (仕事用) が読まれる

※HOME変数を書き換えたときにどっかでエラー出るんじゃないかと不安 (そもそもsshが期待どおり動作していないわけで、似たようなことがありそう)

iTermのプロファイルを使ったおまけ

iTermの設定で以下をそれぞれ用途別に設定するとプロファイルの切り替えで

  • Profile→General→Command→Login ShellをCommandに変更して以下を入れる
    • /usr/bin/env HOME=/Users/taro/work /bin/bash --login
  • Profile→General→Command→Working Directoryに以下を入れる
    • /Users/taro/work

試行錯誤してたやつ

やってみて単純にダメだった HOME 変数の書き換え

だめだった

やりたいことはできてるけど不都合も多い sshコマンドの alias

ターミナルアプリを判別して以下を叩くようにしておいた。動くといえば、動く。あんまり困らない人は、困らない。

alias ssh='ssh -F ~/.ssh/config2'

最後に

探したとき見つけられなかった内容をまとめてみましたが、もっとよくまとまっているページがあれば教えてください。
また、この方法の方が楽という話があれば教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0