さくらレンタルサーバからSSHでbitbucketの接続テスト

2019/02/08

本番サーバ(さくらレンタルサーバ)からBitbucketにあるリモートリポジトリをクローンするためには、事前準備としてSSHプロトコルで接続できるようにしておかないといけません。

そのためにはデプロイ用の公開鍵・秘密鍵を作成して公開鍵をBitbuketに設定する必要があります。

ポイント

ローカル → リモートリポジトリのSSH接続も同様の手順になります。

 

やりたい事

公開用サーバからSSHでBitbucketに接続する。

 

手順

【1】コンソールでSSH認証の公開鍵と秘密鍵を作成

【2】公開鍵の内容をクリップボードに保存

【3】Bitbucketに公開鍵を登録

【4】configの設定

【5】秘密鍵のパーミッションを変更

【6】接続テスト

 

【1】コンソールでSSH認証の公開鍵と秘密鍵を作成

Bitbucketとの接続にはSSHプロトコルを用います。

そのために公開鍵をBitbucketのユーザと紐づける必要があります。

さくらのレンタルサーバにSSHで接続して公開鍵と秘密鍵を作成します。


% cd ~/.ssh
% ssh-keygen -t rsa -C {Bitbucketで登録したメールアドレス}

【構文】ssh-keygen
公開鍵認証方式で使用するキーペアを生成します。

上記のコマンドを実行すると

1)鍵の保存先
2)パスワード×2回

を聞かれます。

必要に応じて各自入力してください。

自分は全て何も入力せずエンターで進みました。

(※鍵の保存先はデフォルトのまま/パスフレーズは空のまま。)

鍵の保存先とパスワードの入力が終わると~/.sshディレクトリに

・id_rsa(秘密鍵)
・id_rsa.pub(公開鍵)

が作成されます。

 

【2】公開鍵の内容をクリップボードに保存

lessやcatコマンドなどで公開鍵の内容を表示します。


$ cat ~/.ssh/id_rsa.pub

表示された公開鍵の内容をマウスで選択してコピーします。

 

【3】Bitbucketに公開鍵を登録

Bitbucketにログインします。

1)ユーザアイコン => 「Bitbucket setting」

2)「セキュリティ」 => 「SSH 鍵」 => 「鍵を追加」

3)出力されたフォームに適当な「ssh-rsa」を入力し、「Key」の箇所に【2】でコピーした公開鍵の内容をペーストします。

 

【4】configの設定

.ssh/configファイルでSSH接続を管理します。


$ cd ~/.ssh/
$ vi config

~/.ssh/configにはSSH接続時の情報を定義しておくことができます。


Host bitbucket.org
 HostName altssh.bitbucket.org
 User git
 Port 443
 IdentityFile ~/.ssh/id_rsa
 TCPKeepAlive yes
 IdentitiesOnly yes

【解説】
~ 主要な設定項目 ~
Host ⇒ sshコマンド等で指定するホスト名。
HostName ⇒ 実際に接続ホストのアドレス。IPアドレスやホスト名を指定。
User ⇒ ユーザー名
Port ⇒ ポート番号 (※22ポートだとエラーが出たので443ポートにしました)
IdentityFile ⇒ 秘密鍵ファイル

例えば、会社用と個人用のアカウントを使い分ける場合です。

手順1.~/.ssh/config の接続設定をリポジトリ毎につくる

SSHの設定ファイルを編集します。


$ vi ~/.ssh/config
===
Host bitbucket.org
 HostName altssh.bitbucket.org
 User git
 Port 443
 IdentityFile ~/.ssh/id_rsa
 TCPKeepAlive yes
 IdentitiesOnly yes

Host pte.bitbucket.org
 HostName altssh.bitbucket.org
 User git
 Port 443
 IdentityFile ~/.ssh/id_rsa2 #id_rsa2という名前で認証鍵を作った場合
 TCPKeepAlive yes
 IdentitiesOnly yes

 

ポイント

HostName は区別できれば何でもOKです。
変更点は「HostName」と「IdentityFile」だけです。

 

手順2.リポジトリ毎にリモートのドメインを書き換える

Gitの設定ファイルを編集します。


$ vi {Laravelプロジェクト名1}/.git/config
===
[remote "origin"]
    url = git@bitbucket.org:<アカウント名>/{リポジトリ名}.git
===

$ vi {Laravelプロジェクト名2}/.git/config
===
[remote "origin"]
    url = git@pte.bitbucket.org:<アカウント名>/{リポジトリ名}.git
===

 
これでリポジトリごとに2つの別々のアカウントへ接続することができます。

 

【5】秘密鍵のパーミッションを変更

このままだと秘密鍵の方のファイルパーミッションがオープンすぎるのでエラーが出ます。

秘密鍵のパーミッションを0600に変えます。


$ chmod 0600 ~/.ssh/id_rsa

 

【6】接続テスト


$ ssh -T bitbucket.org

【構文】
sshコマンドはリモートホスト(※ここではbitbucket.org)に接続してコマンドを実行する時に使用します。
オプションのTは仮想端末の割り当てを禁止します。(※小文字だとエラーが出るので注意)

下記のような画面になればOKです。

以上で公開サーバからBitbucketに繋がります。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築