SSH

Posted by muchag | Eclipse |
初回投稿:2015-12-10 (木) 20:09:30 | 最終更新:2015-12-11 (金) 20:05:56

【環境】
Eclipse:Mars.1 (4.5.1) PHP
EGit:4.1.1.201511131810-r
OS:Windows7 SP1 64bit
公開鍵の設定
  1. [ウィンドウ]-[設定]
  2. [一般]-[ネットワーク接続]-[SSH2]
  3. [鍵管理] タブを選択
  4. [RSA 鍵の生成]
  5. [秘密鍵の保管]
    1. [パスフレーズ保護なしでこの秘密鍵を保管しますか?]-[OK]
    2. [保存ファイル名] 任意
  6. [OK]
複数鍵の併用

リモートリポジトリが複数ある場合、公開鍵を複数併用する必要が出てくる。
(あ、実は使いまわしてもいいのかしらね。。。試してない)

そんなときの対応法。

設定

公開鍵の保存ディレクトリ %HOME%/.ssh にある config ファイルを用いて設定。

ディレクトリ

デフォルトは、下記の通り。

C:\Users\(ユーザー名)\.ssh
ファイル

そして、私の場合は、同ディレクトリ内に config ファイルがなかったので
テキストファイルを配置してリネーム。

C:\Users\(ユーザー名)\.ssh\config
拡張子

拡張子は、なし。
当然、Windows から警告が出るけど、OK。

書式
  1. Host bitbucket-account1 # 名称自体は任意だけど、後で Eclipse へ入力するので、それを踏まえて命名
  2.   User git
  3.   HostName bitbucket.org
  4.   IdentityFile ~/.ssh/account1_key_file_name
  5.   IdentitiesOnly yes
  6.  
  7. Host bitbucket-account2
  8.   User git
  9.   HostName bitbucket.org
  10.   IdentityFile ~/.ssh/account2_key_file_name
  11.   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 のコマンドプロンプトで

  1. $ chgrp -R Users ~/.ssh

としたら、そんなコマンド知らないよ~と言われた。
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. 個人用の設定ファイルでさらに快適に

Posted by muchag | Eclipse |
初回投稿:2015-12-10 (木) 20:09:30 | 最終更新:2015-12-11 (金) 20:05:56

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment