Never Say Die

やんなっちゃうけれど、いいことあんのも、人生。そうやって生きてくんだ。

【Bash on Windows】 SSHでConfigファイルをうまく実装できないときの対策法

 

Bash on Windows(以下BoW)で.ssh/configを設定してsshを実行したときに 

Bad owner or permissions on /mnt/c/Users/hoge/hoge/.ssh/config

のようなエラーを出されて困った際のメモ.

 

同じように困った人の解決策の一つになれば幸い.

 

 状況

・BoWにおけるホームディレクトリを [ /home/ユーザー名/ ] ではなく[ /mnt/c/Users/hoge/Documents/ ] 等windowsに側のディレクトリにしている.

 

解決策

1.~/.ssh/configの実行権限を変更する.

同様のエラーが出てググるとまず最初に出てくるであろう解決策.

chmod 600 ~/.ssh/config

とすれば解決する.

 

.....ホームディレクトリがlinux側だったらね.

そもそもWindowsにおけるファイルにはmacOSやLinuxOSのような

パーミッションという概念が存在しない

(代わりに拡張子の属性で分別して実行ファイルか否かの判断をしている).

 

2.ホームディレクトリを元に戻す.

windows側のディレクトリで1の解決策が使えないなら,ホームディレクトリを

Linux側のディレクトリに戻せば問題は解決できる.

 

ホームディレクトリの変更方法は,/etc/passwdを変更するとできるので,

この方法で構わない人はこれで対応してください.

 

3.configファイルだけLinux側に置いておく

ホームディレクトリをwindowsOS側においているのにもいろいろ事情があるはず.

そこで,百歩譲ってconfigファイルは/home/ユーザー名/.ssh/configに置くとして,

ホームディレクトリを変えないで対応する方法を以下に記載する.

 

まず,configファイルを/home/ユーザー名/.ssh/configにコピー.

 

cp ~/.ssh/ /home/ユーザー名/.ssh/config

 

つぎに,~/.bashrcを開いて,以下を追記

 

alias ssh='ssh -F ./home/ユーザー名/.ssh/config'

 

そして,.bashrcを実装.

source ~/.bashrc

 

以上.

 

ただし,注意して欲しいのは,ssh で-F オプションを使うと,

/etc/ssh/ssh_config

に記載している設定が読み込まれないらしい.

なので,適宜必要な設定はローカル側で読み込む/home/ユーザー名/.ssh/configファイルにコピーしておくのが無難.

 

ではでは.