SSHログインをAzure Active Directoryを利用して認証させる方法
Azure Active Directory(以下AAD)を認証に利用し、Linuxサーバへログインさせるための手順です。
環境は、CentOS7を利用します。AADはOffice365に付属している無料版AADです。
P1やP2がなくても実現できます。
Azure ADにアプリケーションを作成する
Office 365管理者ポータルからの場合、以下のように進みます。
管理センター→Azure Active Directory
Azure Active Directory → アプリの登録 → 新しいアプリケーションの登録をクリック
名前欄に適当な名前今回はLinux_AADとしました。
アプリケーションの種類をネイティブにします。
リダイレクトURIには、独自ドメインか、テナント作成時に取得したonmicrosoft.comのドメインのどちらかのトップレベルドメインを入力します。
作成したアプリケーションの[アプリケーションID]をメモしておきます。
AzureAD側の作業はこれで完了です。
SELinux停止
selinuxを停止させます。
#vi /etc/sysconfig/selinux SELINUX=disabled
SELinuxを停止させるために一度再起動します。
必要パッケージのインストール
#yum -y install epel-release #yum -y install npm nodejs git
aad-loginのインストール
GitHubで公開されているaad-loginを対象サーバにインストールします。
#git clone https://github.com/bureado/aad-login #cd aad-login #mkdir -p /opt/aad-login #cp aad-login.js package.json /opt/aad-login/ #cp aad-login /usr/local/bin/ #cd /opt/aad-login/ #npm install
認証用AzureAD等の設定
事前にAzureADに登録したアプリケーションIDと認証に利用するディレクトリを指定します。
またログイン用URLが古いため、現在のURLに変更します。
#vi aad-login.js 変更点のみ記述 // Configuration parameters var directory = '独自ドメイン or o365用onmicroftのドメイン'; var clientid = '前述でメモしたアプリケーションID'; authorityHostUrl : 'https://login.microsoftonline.com',
SSH認証設定を追加
#vi /etc/pam.d/sshd auth sufficient pam_exec.so expose_authtok /usr/local/bin/aad-login ←githubに記載されているのをそのまま追記
AzureADと同じユーザ名をLinuxサーバへ追加
#useradd o365user
ログイン確認
TeraTerm等を利用して、対象サーバにAzureADに登録したユーザ名とパスワードを入力しログインします。
正常にログインできればOKです。
ログインできない場合には、/var/log/secure のログを確認しましょう!
社内ADと接続せずとも認証をかけられるようになるので便利ですね。