【環境】
Eclipse:Mars.1 (4.5.1) PHP
EGit:4.1.1.201511131810-r
OS:Windows7 SP1 64bit
公開鍵の設定
- [ウィンドウ]-[設定]
- [一般]-[ネットワーク接続]-[SSH2]
- [鍵管理] タブを選択
- [RSA 鍵の生成]
- [秘密鍵の保管]
- [パスフレーズ保護なしでこの秘密鍵を保管しますか?]-[OK]
- [保存ファイル名] 任意
- [OK]
複数鍵の併用
リモートリポジトリが複数ある場合、公開鍵を複数併用する必要が出てくる。
(あ、実は使いまわしてもいいのかしらね。。。試してない)
そんなときの対応法。
設定
公開鍵の保存ディレクトリ %HOME%/.ssh にある config ファイルを用いて設定。
ディレクトリ
デフォルトは、下記の通り。
C:\Users\(ユーザー名)\.ssh
ファイル
そして、私の場合は、同ディレクトリ内に config ファイルがなかったので
テキストファイルを配置してリネーム。
C:\Users\(ユーザー名)\.ssh\config
拡張子
拡張子は、なし。
当然、Windows から警告が出るけど、OK。
書式
Host bitbucket-account1 # 名称自体は任意だけど、後で Eclipse へ入力するので、それを踏まえて命名
User git
HostName bitbucket.org
IdentityFile ~/.ssh/account1_key_file_name
IdentitiesOnly yes
Host bitbucket-account2
User git
HostName bitbucket.org
IdentityFile ~/.ssh/account2_key_file_name
IdentitiesOnly yes
Eclisep
Git リモートリポジトリからプロジェクトをインポート の
[ソース Git リポジトリー]-[ロケーション]-[URI] に
git@bitbucket.org:username/ripositoryname.git
と入力していたところを
bitbucket-account1:username/ripositoryname.git
と入力する。
エラー
頑張って設定したのに、下記エラーが出た。 😥
トランスポート・エラー: リモート・リポジトリー参照を取得できません。
ssh://git@bitbucket-Jyukucho/guinnessvillage/common-php.git: conq: repository access denied.
英語のエラーメッセージは Cannot get remote repository refs となるみたい
Google 先生に質問をしてみると、認証エラーということで、
SSH 公開鍵のセッテに問題があるのかと、何度もやり直しをしてみたけど
さっぱり直らない。
解決
最終的には、PC の再起動で正常に動作した。。。虚しい。。。
開発 PC なので、メモリを食い過ぎているのかしらね~。
おまけ
上記エラーについて、あれこれ調べている間に、
色々な参考情報を入手したので、メモ。
きのふよりけふ、けふよりあした:【git】egitをつかってみて
→ローカルとリモート(GitHub)でリポジトリ名が異なるとプッシュできなかったみたい
→私は試しに異なるリポジトリ名にしてみたけど、問題なくプッシュできた(Bitbucket)
mziの日記:Eclipse で github : Pushできない- Windows
→.ssh/known_hosts が更新されなくて、プッシュできなかったとのこと
パーミッション問題
.ssh/ 関連には、パーミッションの既定があるそうで
- .ssh/ ディレクトリは Users の所有にしなければならない
- .ssh/config のパーミッションは 0600 でなければならない
- Windows では、パーミッションは関係ない。そもそも [属性] の設定しかできない
というような記述を見かけた。
調べてもいないし、勉強もしていないので、本当かどうかもわからないから
ひとまずメモ。
Windows 8でcygwinのSSH秘密鍵を使うとPermissions 0660 too openと怒られる
Windows7 Home SP1 64bit のコマンドプロンプトで
としたら、そんなコマンド知らないよ~と言われた。
DOSEI日記:SSH の config のパーミッションエラーを解決する
HOME 問題
Windows の場合、HOME とは、前述の通り、デフォルトで下記のように設定されているらしい。
C:\Users\(ユーザー名)
つまり、秘密鍵の保存場所を独自にしたければ、この辺の設定をしなければならない。
また、HOME の場所を変更したければ、環境変数の登録が必要とのこと。
設定ファイル
.ssh/config は、端末個別の設定ファイル。
ssh_config は、サーバー全体の設定ファイル。
.ssh/config の内容が優先される。
ワイルドカード(*)を利用できる。
それマグで!:.ssh/config でSSH設定を活用する方法。
URL(URI)書式
Eclipse へ URI を設定する場合、下記どちらでも OK だった。
git@bitbucket-account1:username/ripositoryname.git
bitbucket-account1:username/ripositoryname.git
踏み台サーバーを介する場合
詩的私的雑記帳:ssh/configの書き方と踏み台サーバを利用した多段sshログイン,多段scp
リファレンス
入門OpenSSH
付録
4.7. 個人用の設定ファイルでさらに快適に