macOS 用 GSI-OpenSSH を用いたHPCIログイン

0. 変更履歴

0.1 主な変更内容

2024.04.05

  • ログイン手順の一部を利用者の環境に合わせて修正しました。

2023.07.31

  • 一部の項目で文章表現や構成を修正しました。

  • 本書のテキスト版の提供を終了しました。

2023.05.09

  • 「1.2 本ソフトウェアの制限事項」を記載しました。

2023.04.28

  • 参照するドキュメントの URL を修正しました。

2023.01.10

  • Apple silicon に対応しました。

  • tarball を gsi-openssh-for-macOS-20230110.tar.gz に更新しました。

  • 「3.3 注意事項」の記述を修正しました。

  • 「4. macOS 用 GSI-OpenSSH のアップデート手順」を記載しました。

2022.12.19

  • タイトルを変更しました。

2022.07.15

  • 英語版ドキュメントを作成しました。

2022.01.31

  • 初版を公開しました。

1. 概要

本書は、macOS の利用者を対象に、macOS 用 GSI-OpenSSH を利用して HPCI 環境にログインする方法について解説したマニュアルです。

macOS 用 GSI-OpenSSH とは、以下のソフトウェアを macOS 上でビルドしたものです。Docker イメージは使用しません。

  • OpenSSL

  • Grid Community Toolkit (gsi-openssh-8.7p1c を含む)

以降、本書では Grid Community Toolkit を GCT と省略して表記します。

1.1 動作環境

Intel チップの Mac

  • macOS 11 以降 (Big Sur, Monterey, Ventura)

    • HPCI の検証環境では、Big Sur で動作検証を行いました。

Apple silicon の Mac

  • Apple シリコンを搭載した Mac であること

    • HPCI の検証環境では、Monterey で動作検証を行いました。

1.2 本ソフトウェアの制限事項

  • サーバ機能は提供しません。

    • macOS 用 GSI-OpenSSH はクライアント機能だけを提供します。サーバ機能の動作は保証しておりません。

2. macOS 用 GSI-OpenSSH のインストール手順

2.1 ダウンロード

  1. tarball を下記 URL からダウンロードします。

    ユニバーサルバイナリとして作成しているので、Intel チップの Mac、Apple silicon の Mac のどちらでも動作します。

2.2 インストール手順

  1. ターミナルを起動します。操作はすべてターミナル上で行います。

  2. インストール先のディレクトリとして /usr/local/globus-6 ディレクトリを作成します。globus-6 の所有者およびグループは、利用者のアカウントにあわせて変更してください。

% sudo mkdir /usr/local/globus-6
% sudo chown <your-uid>:<your-gid> /usr/local/globus-6
  1. ダウンロードしたファイルを /usr/local/globus-6 に展開します。

% cd /usr/local/globus-6
% tar zxvf /path/of/gsi-openssh-for-macOS-20220131.tar.gz

2.3 インストール後の設定

環境設定

GCT の使用に必要な環境変数の設定をおこなうスクリプト globus-user-env.sh があります。これをログインシェル (zsh) の個人用設定ファイル (~/.zprofile) で読み込んで設定します。

また、macOS 標準の SSL (LibreSSL) ではなく、tarball に同梱した OpenSSL のコマンドを優先して使用するため、環境変数 PATH の設定を変更します。

  1. ターミナルを起動します。

  2. ~/.zprofile に下記を追記します。

GLOBUS_LOCATION=/usr/local/globus-6
if [ -f $GLOBUS_LOCATION/share/globus-user-env.sh ] ; then
        . $GLOBUS_LOCATION/share/globus-user-env.sh
        PATH=$GLOBUS_LOCATION/openssl/bin:$PATH
fi
  1. 設定を反映するため、一旦ターミナルを終了し、改めて起動してください。

  2. パスが設定されたことを確認するため、gsissh のバージョンを確認します。

% gsissh -V
OpenSSH_8.7p1c-GSI GSI-hpn15v2, OpenSSL 1.1.1q  5 Jul 2022
%

CA 証明書の設定

HPCI 認証局の CA 証明書をダウンロードして /usr/local/globus-6/share/certificates ディレクトリに配置します。

  1. 下記コマンドを実行します。

% /usr/local/globus-6/share/hpci/set-cacert.sh

CRL の定期更新設定

HPCI 認証局の CRL を定期的に更新するための設定を行います。

  • /usr/local/globus-6/share/hpci/fetch-crl.sh というスクリプトを定期実行することにより実現します。

  • スクリプトの定期実行には cron を利用します。cron への登録には /usr/local/globus-6/share/hpci/set-fetch-crl.sh スクリプトを使用します。

  1. 下記コマンドを実行します。

% /usr/local/globus-6/share/hpci/set-fetch-crl.sh on
  • 実行すると、実際に crontab に登録した内容を標準出力に出力します (既存のエントリも含めてすべて出力します)。/usr/local/globus-6/share/hpci/fetch-crl.sh を実行するエントリが登録されていることをご確認ください。

  • 変更前の内容をバックアップファイル crontab.bak としてカレントディレクトリに出力します。不要ならば削除してください。

インストール後に必要な設定は以上です。

2.3 アンインストール手順

macOS 用 GSI-OpenSSH が不要になった場合のアンインストール手順は下記のとおりです。

  1. crontab から fetch-crl.sh の設定を削除します。下記コマンドを実行します。

% /usr/local/globus-6/share/hpci/set-fetch-crl.sh off
  • 実行すると、実際に crontab に登録された内容を標準出力に出力します (既存のエントリも含めてすべて出力します)。/usr/local/globus-6/share/hpci/fetch-crl.sh を実行するエントリが消去されていることをご確認ください。

  • 変更前の内容をバックアップファイル crontab.bak としてカレントディレクトリに出力します。不要ならば削除してください。

  1. /usr/local/globus-6 ディレクトリを削除します。

% cd /usr/local/
% rm -rf globus-6/*
% sudo rmdir globus-6

3. HPCI 環境へのログイン手順

macOS 用 GSI-OpenSSH をインストールした環境では、ターミナル上で myproxy-logon コマンドや gsissh コマンドをそのまま実行できます。HPCI ログインマニュアルの記述に従って実行してください。

3.1 ターミナル の起動

ターミナルを起動します。

3.2 ログインサーバへのログイン

本節ではログイン手順の概要を説明します。詳細は HPCI ログインマニュアル を参照してください。

代理証明書の発行

最初に、Web ブラウザで HPCI 証明書発行システム にアクセスして代理証明書を発行し、代理証明書リポジトリに格納する必要があります。

注意

  • 代理証明書の有効期限は最大168時間です。

  • 有効期限が切れたら、その都度発行 (格納) してください。

  • 発行 (格納) 手順は以下のドキュメントを参照してください。

代理証明書のダウンロード

ターミナル に代理証明書をダウンロードします。

  1. myproxy-logon コマンドで、代理証明書をダウンロードします。

[hpciuser@XXXXXXXXXXXX ~]$ myproxy-logon -s portal.hpci.nii.ac.jp -l [HPCI-ID]
Enter MyProxy pass phrase: ********
A credential has been received for user <HPCI-ID> in /tmp/x509up_up2000.
[hpciuser@XXXXXXXXXXXX ~]$
  1. grid-proxy-info コマンドで、取得した代理証明書の情報を確認します。

[hpciuser@XXXXXXXXXXXX ~]$ grid-proxy-info
subject  : /C=JP/O=NII/OU=HPCI/CN=user/CN=proxy/CN=proxy/CN=proxy/CN=proxy
issuer   : /C=JP/O=NII/OU=HPCI/CN=user/CN=proxy/CN=proxy/CN=proxy
identity : /C=JP/O=NII/OU=HPCI/CN=user
type     : RFC 3820 compliant impersonation proxy
strength : 2048 bits
path     : /tmp/x509up_u2000
timeleft : 12:01:15
[hpciuser@XXXXXXXXXXXX ~]$

ログインサーバへのログイン

  1. ログインサーバにログインします。以下に東京工業大学のログインサーバ login.t3.gsic.titech.ac.jp にログインする例を示します。

[hpciuser@XXXXXXXXXXXX ~]$ gsissh -p 2222 login.t3.gsic.titech.ac.jp
Last login: Tue Jan 24 11:09:13 2023 from xxx.xxx.xxx.xxx
--------------------------------------------------------------------
Last modified: 2023-04-06 17:00:00 JST

 ** Do not run heavy programs like ISVs on login nodes login[01]. **

    (The current TSUBAME 3.0 operational status)
    https://www.t3.gsic.titech.ac.jp/      Twitter:@Titech_TSUBAME
--------------------------------------------------------------------
<HPCI-ID>@login1:~>
  1. ログインサーバ から exit すると、 ターミナルのシェル に戻ります。

<HPCI-ID>@login1:~> exit
logout
Connection to login.t3.gsic.titech.ac.jp closed.
[hpciuser@XXXXXXXXXXXX ~]$

3.3 注意事項

注意

本節の件は 2022年12月28日時点で解消されています。

現状、理研 R-CCS のサーバへの接続がエラーになります。

% gsissh -p 2222 hpciss04.r-ccs.riken.jp
ssh_packet_read: read: Connection reset by peer
%

この問題を回避するには、以下の方法で対応してください。

  • 実行時に引数 -oGSSAPIKexAlgorithms=gss-gex-sha1- を指定します。

    % gsissh -p 2222 -oGSSAPIKexAlgorithms=gss-gex-sha1- hpciss04.r-ccs.riken.jp
    
  • 個人用の ssh 設定ファイル $HOME/.ssh/config に下記の設定を追加します。

    Host *.r-ccs.riken.jp
    GSSAPIKexAlgorithms gss-gex-sha1-
    

    この場合は実行時の引数を省略できます。

    % gsissh -p 2222 hpciss04.r-ccs.riken.jp
    

4. macOS 用 GSI-OpenSSH のアップデート手順

本章では、旧バージョンの macOS 用 GSI-OpenSSH を新バージョンに更新する手順を説明します。

説明では以下の名前を使用します。実際に使用するバージョンで読み替えてください。

tarball 名

新バージョン

gsi-openssh-for-macOS-20230110.tar.gz

旧バージョン

gsi-openssh-for-macOS-20220131.tar.gz

注意

gsi-openssh-for-macOS-20220131.tar.gz は Intel chip 用です。Apple silicon では動作しません。

4.1 アップデート手順

  1. ターミナルを起動します。操作はすべてターミナル上で行います。

  2. /usr/local/globus-6 ディレクトリのアプリケーション (例 : /usr/local/globus-6/bin/gsissh) で実行中のものがあれば、すべて停止してください。

  3. crontab から fetch-crl.sh の設定を削除します。下記コマンドを実行します。

% /usr/local/globus-6/share/hpci/set-fetch-crl.sh off
  • 実行すると、実際に crontab に登録された内容を標準出力に出力します (既存のエントリも含めてすべて出力します)。/usr/local/globus-6/share/hpci/fetch-crl.sh を実行するエントリが消去されていることをご確認ください。

  • 変更前の内容をバックアップファイル crontab.bak としてカレントディレクトリに出力します。不要ならば削除してください。

  1. 旧バージョンをインストールした /usr/local/globus-6 ディレクトリを退避するため改名します。ここでは /usr/local/globus-6.20220131 とします。

% cd /usr/local/
% sudo mv globus-6 globus-6.20220131
  1. 2.2 インストール手順 」の手順に従って gsi-openssh-for-macOS-20230110.tar.gz を /usr/local/globus-6 ディレクトリの下に展開します。

  2. 旧バージョンで使用した /usr/local/globus-6.20220131/share/certificates にある CA 証明書等のファイルを、必要に応じて /usr/local/globus-6/share/certificates/ にコピーしてください。

  3. 旧バージョンで使用した設定ファイル ssh_config を変更している場合は、変更内容を新バージョンの設定ファイル ssh_config に反映してください。

  4. CRL の定期更新設定 」の手順に従って HPCI 認証局の CRL の定期更新を設定します。

  5. 退避した旧バージョンを削除します。

% cd /usr/local/
% rm -rf globus-6.20220131

アップデート手順は以上です。