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で登録したメールアドレス}
公開鍵認証方式で使用するキーペアを生成します。
上記のコマンドを実行すると
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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。