Alibaba Cloud DevOps の Codeup リポジトリは、HTTP(S) および Secure Shell (SSH) アクセスプロトコルをサポートしています。SSH プロトコルは、パスワード不要の安全な認証を提供し、HTTP(S) プロトコルよりも優れたパフォーマンスを発揮します。このトピックでは、SSH キーを設定して Codeup でコードのプッシュとプルを行う方法について説明します。
前提条件
SSH プロトコルを使用してコードリポジトリを操作する前に、SSH 公開鍵を生成し、ご利用の Alibaba Cloud DevOps アカウントにアップロードする必要があります。
SSH プロトコルを使用して Codeup にアクセスするには、次の要件を満たす必要があります。
Git V1.9 以降がローカルマシンにインストールされていること。インストールされているバージョンを確認するには、
git --versionコマンドを実行します。OpenSSH クライアントがローカルマシンにインストールされていること。GNU/Linux、macOS、および Windows 10 には OpenSSH がプリインストール済みです。
SSH のバージョンは最新の状態に保ってください。バージョン 6.5 以前は MD5 署名を使用しているため、セキュリティ上の脆弱性が存在する可能性があります。
背景情報
Codeup は、次の SSH 暗号化アルゴリズムタイプをサポートしています:
アルゴリズムタイプ | 公開鍵 | 秘密鍵 |
ED25519 (推奨) | id_ed25519.pub | id_ed25519 |
RSA (非推奨) | id_rsa.pub | id_rsa |
手順1:既存の SSH キーの確認
新しい SSH キーを生成する前に、使用できる既存のキーがあるか確認します。SSH キーペアは通常、ローカルユーザーのルートディレクトリに保存されています。
Linux および macOS では、次のコマンドを実行して既存の公開鍵を確認します。Windows では、WSL (Windows 10 以降が必要) または Git Bash でコマンドを実行します:
ED25519 アルゴリズム
cat ~/.ssh/id_ed25519.pubRSA アルゴリズム
cat ~/.ssh/id_rsa.pubコマンドが `ssh-ed25519` または `ssh-rsa` で始まる長い文字列を返した場合、ローカルに公開鍵がすでに存在します。手順2をスキップして手順3に進むことができます。
手順2:SSH キーの生成
手順1のコマンドが文字列を返さない場合、ローカルマシンに使用可能な SSH キーは存在しません。この場合は、新しい SSH キーを生成する必要があります。
ターミナルを開き、
ssh-keygen -tコマンドを実行します。キーアルゴリズムタイプと任意のコメントを入力します。コメントは
.pubファイルに表示されます。コメントにはメールアドレスを使用できます。
ED25519アルゴリズムを使用してキーペアを生成するには、次のコマンドを実行します:ssh-keygen -t ed25519 -C "<your_comment>"RSAアルゴリズムを使用してキーペアを生成するには、次のコマンドを実行します:ssh-keygen -t rsa -C "<your_comment>"
Enter キーを押して、SSH キーのデフォルトのファイルパスをそのまま使用します。
ED25519 アルゴリズムの場合、デフォルトのパスは次のようになります:
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/user/.ssh/id_ed25519):秘密鍵のデフォルトパスは
/home/user/.ssh/id_ed25519で、対応する公開鍵は/home/user/.ssh/id_ed25519.pubです。RSA アルゴリズムの場合、デフォルトのパスは次のようになります:
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa):秘密鍵のデフォルトパスは
/home/user/.ssh/id_rsaで、対応する公開鍵は/home/user/.ssh/id_rsa.pubです。
キーに パスフレーズ を設定します。
Enter passphrase (empty for no passphrase): Enter same passphrase again:パスフレーズはデフォルトでは空です。パスフレーズを使用して秘密鍵ファイルを保護できます。SSH プロトコルを使用するたびにパスフレーズを入力したくない場合は、キーの作成時にパスフレーズを空のままにします。
Enter キーを押してキーペアを作成します。
キーは認証に使用されます。秘密鍵は安全に保管してください。公開鍵ファイルは `.pub` 拡張子で終わり、共有できます。`.pub` 拡張子のない秘密鍵ファイルは誰にも開示しないでください。
手順3:公開鍵のコピー
コマンドラインの出力から公開鍵を手動でコピーする代わりに、コマンドを使用してクリップボードにコピーできます。ご利用のオペレーティングシステムに対応するコマンドを実行します:
cat ~/.ssh/id_ed25519.pub | clipmacOS:
tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopyGNU/Linux (xclip が必要):
xclip -sel clip < ~/.ssh/id_ed25519.pub手順4:Codeup への公開鍵の追加
-
Alibaba Cloud DevOps にログインします。右上隅にあるプロフィール画像をクリックし、[個人設定] を選択してから、[SSH 公開鍵] を選択します。
生成された SSH 公開鍵を追加します。
公開鍵
説明ssh- からメールアドレスまで、公開鍵全体をコピーします。
名前:キーを識別するためのカスタム名です。
適用範囲:キーの範囲です。読み取り/書き込みまたは読み取り専用に設定できます。読み取り専用に設定した場合、キーはコードのプルにのみ使用でき、コードのプッシュには使用できません。
有効期限:キーの有効期限が切れる日付です。この日付を過ぎると、キーは無効になります。
[追加] をクリックしてキーを保存します。
よくある質問
ローカルに複数のキーがある場合、特定のプラットフォームに対して正しいキーを自動的に選択するにはどうすればよいですか?
ローカルに複数のキーがあり、認証ルールを設定していない場合、ローカルマシンは認証のためにランダムにキーを選択することがあります。これにより、認証が失敗する可能性があります。
次のシナリオでは、認証キーへのパスを定義することを推奨します:
異なる Alibaba Cloud DevOps アカウント用に複数のキーがある。
GitLab、GitHub、Alibaba Cloud DevOps など、異なるコードプラットフォーム用に複数のキーがある。
認証キーのパスルールの定義
ローカルターミナルを開き、~/.ssh/config ファイルを編集します。Windows では、WSL (Windows 10 以降が必要) または Git Bash を使用します。ファイルを次のフォーマットで編集します:
# Codeup ユーザー1の例
HostName codeup.aliyun.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
# Codeup ユーザー2の例、エイリアス codeup-user-2
Host codeup-user-2
HostName codeup.aliyun.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/codeup_user_2_ed25519
# GitLab プラットフォーム
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_ed25519
この設定により、SSH クライアントはプラットフォームにアクセスする際に指定されたキーを認証に使用します。これにより、同じプラットフォーム上の異なるアカウントや、異なるプラットフォームに対して、異なるローカル SSH キーを使用できます。
Alibaba Cloud DevOps にアクセスするには、両方のアカウントで HostName が同じであるため、エイリアスを使用してキーを選択します。
GitLab にアクセスするには、HostName に基づいてキーが選択されます。
# Codeup にアクセス、~/.ssh/id_ed25519 キーを使用
git clone git@codeup.aliyun.com:example/repo.com
# エイリアス codeup-user-2 で Codeup にアクセス、~/.ssh/codeup_user_2_ed25519 キーを使用
git clone git@codeup-user-2:example/repo.com
# GitLab プラットフォームにアクセス、~/.ssh/gitlab_ed25519 キーを使用
git clone git@gitlab.com:example/repo.com