【初心者向けに説明】Azure DevOpsでSSH接続する設定方法(認証エラー対策)

[記事内には広告が含まれています]

こんにちは、現役エンジニアの inno_tech です。

以前の記事では、Azure DevOpsのgit認証エラー対策としてhttps接続用のPersonal Access Token(PAT)を発行する方法を紹介しました。
とはいえ、毎回リポジトリと接続するたびにPATを生成するというのも不便です。

そこで今回は、Azure DevOpsにSSH接続するための設定方法を紹介します。
一度SSHの認証をすれば、sshキーを登録したデバイスからは自動認証で接続が可能となり、PATを発行する手間がなくなります。

SSH接続までのステップは3stepです。それでは説明をご覧ください。
(本記事は ubuntu20.04LTSの環境で検証しています。)

もくじ

step1. SSHキーの作成

まずは ssh-keygen コマンドを使ってsshキーを作成します。
-tオプション暗号化のアルゴリズムを指定しますが、RSAという方式で生成してください。

近年では Ed25519方式等のセキュリティを強化した方式もありますが、Azure DevOps側が対応していません
(参考: https://docs.microsoft.com/ja-jp/troubleshoot/azure/virtual-machines/ed25519-ssh-keys)

SSHプロトコルを使用するために、OpenSSHというSSH接続用ツールをインストールし、その後 SSHキーを作成していきます。

# OpenSSH serverのインストール
sudo apt-get install openssh-server

# RSA方式のアルゴリズムに対応したキーを作成
# -f: ファイル名
# -C: コメント
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "your_email@example.com"

## 下記が表示されたらパスワードを入力 
Generating public/private rsakey pair.
Enter passphrase (empty for no passphrase): 

# 下記が表示されたら、もう一度同じパスワードを入力 
Enter same passphrase again: 

# 秘密鍵 my_ssh_key, 公開鍵 my_ssh_key.pub  の2ファイルが生成される
Your identification has been saved in /home/[username]/.ssh/id_rsa
Your public key has been saved in /home/[username]/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:・・・

注意点として、鍵の生成時に入力したパスワードは忘れないようにしましょう。

ここまでで秘密鍵(id_rsa)公開鍵(id_rsa.pub)の2つのファイルが生成されました。

秘密鍵 は暗号化通信を復号するためのファイルで、他人に渡したりしてはいけません
使用者以外に流出すると、悪意ある第三者に通信が解読される可能性があります。
なお、公開鍵暗号化時のみ使用するファイルで、他人に知られても問題ありません

step2. SSHキー(秘密鍵)をssh-agentに登録

ssh-agent(今回の場合、OpenSSH)に対し、秘密鍵ファイルを登録します。

# 先ほど作成した秘密鍵ファイル を登録
ssh-add ~/.ssh/id_rsa

# パスワードを聞かれるので、sshキー作成時のパスワードを入力
Enter passphrase for /home/[username]/.ssh/id_rsa: 

# Identity added と表示されればOK
Identity added: /home/[username]/.ssh/id_rsa

# 登録された鍵(finger print)を確認するコマンド
ssh-add -l

以上でPC側の設定は完了です。

step3. Azure DevOpsにSSHキー(公開鍵)を登録

続いて、Azure DevOps(リモート接続先)にSSHキーの公開鍵を登録します。

Azure DevOpsにログイン後、User settingから「SSH public keys」の設定を開きます。

SSH Public Keyの登録画面で、「New Key」をクリックします。

登録する公開鍵の中身を確認するため、一旦ターミナルに戻ります。
catコマンドで 公開鍵(.pub)の内容を表示し、その文字列全文をクリップボードにコピーします。(秘密鍵ではないので注意)

# 先ほど作成した公開鍵ファイル を表示
cat ~/.ssh/id_rsa.pub

# 表示される長い文字列をコピー(ssh-rsa~末尾まですべて)
ssh-rsa AXXXX・・・・

Azure DevOpsの画面に戻り、下記のように公開鍵を設定してAddを押下します。

  • Name: 登録する鍵の名前です。自由に設定して構いません。
  • Public Key Data: 確認した公開鍵の文字列データを貼り付けます。

正常に登録できれば、公開鍵の一覧に登録したSSHキーが追加されるはずです。

以上でAzure DevOps側の設定は完了です。

SSH接続テスト

SSH接続の準備ができたら、早速Azure DevOpsに接続してみましょう。

SSH接続用URLの確認

Azure DevOps > Repos の画面にCloneボタンがあるのでクリックします。

Clone Repository の画面が表示され、クローン用URLが表示されます。
SSHのボタンをクリックし、そのURLをコピーしましょう。

すでにClone済みのリポジトリがある場合

なお、https接続でClone済みリポジトリがある場合、リモートリポジトリのURLをssh接続用に変更する必要があります
こちらの記事にやり方をまとめたのでご覧ください。

あわせて読みたい
【1分で分かる】gitのリモートリポジトリのURLを変更(httpsからsshへ) 今回は、すでにclone済みのgitリポジトリに対し、リモートリポジトリURLを変更する方法をまとめます。 例えば、https接続からssh接続に変更したいといった場合に使う機...

テスト接続

早速テスト接続してみましょう。正しいペアの秘密鍵・公開鍵が登録できていれば、接続できるはずです。

なお、初回接続時のみ「Are you sure you want to continue connecting (yes/no/[fingerprint])?」と表示されます。この場合「yes」と入力してください。
2回目以降は、~/.ssh/known_hostsファイルに接続済みホストとして登録されるので上記メッセージが表示されなくなります。

# 試しにclone
git clone [リポジトリurl]

# 初回接続時は、下記のようなメッセージが表示される
The authenticity of host 'vs-ssh.visualstudio.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxx.

# 接続してよいかを確認されるため、yes を押下する 
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'vs-ssh.visualstudio.com,xx.xx.xx.xx' (RSA) to the list of known hosts.
...

# ~/.ssh/known_hosts に接続経験のあるホストとして公開鍵情報が登録される
# 下記コマンドで確認可能
cat ~/.ssh/known_hosts 

最後に

今回はSSH接続の設定方法を説明しました。
SSH接続ではペアとなる鍵を用意し、PC(秘密鍵)とリモート接続先(公開鍵)の両方でそれぞれ鍵を持つことで、暗号化された通信を実現します。

このあたりの暗号化通信に関する知識は国家資格である「情報処理安全確保支援士」の中で学習できますよ。

話は変わりますが、プログラミングを習得したい, 仲間が欲しい人は、プログラミングスクールに通うのがおすすめです
自己学習でかかるコストを考えると十分元が取れると思います。

少しでも興味があれば、まずは無料のオリエンテーションを受講し、自分に合うか試してみるのがよいでしょう。

まずは一歩行動して、将来の自分に楽をさせてあげましょう。

参考になったでしょうか。
ほかにも役立つ情報が他のページにもあるかもしれません。
ご覧いただいても、ご覧いただかなくてもどちらでもどうぞ!

この記事がイイねと思ったら、Twitterフォロー か  にほんブログ村のどちらかしてくれたら嬉しいよ!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント / ご要望

コメントする

goto
もくじ
閉じる