前回の記事JupyterLab に Gitを導入する手順でGitを導入したので次はJupyterLabとGithubを連携したいと思います。
目次
公開鍵・秘密鍵の作成
公開鍵と秘密鍵を作成する。
$ cd .ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxx/.ssh/id_rsa):#パスフレーズ
/Users/xxxx/.ssh/id_rsa already exists.
私は既に作っていたのでその旨のログが出ました。
GitHubに公開鍵を保存する
公開鍵を作成したので、その公開鍵をGitHubに保存します。
https://github.com/settings/keys
GitHubのSSHを設定するページを開きます。
Titleを設定→任意 (ex: id_rsa.pub)
Keyを設定→公開鍵の内容をコピペ ssh-rsa XXXXXXXXX
公開鍵の内容を調べるコマンドは以下の通り
$ cat id_rsa.pub
ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXX
これをそのままコピペしてください。
新しいレポジトリを作成
JupyterLabと連携をするための新しいレポジトリを作成してください。
GitHubの準備はここまでです。
次は,JupyterLabの設定です。
JupyterLabでターミナルを開く
メニューバーのGit
からOpen Git Repository in Terminal
gitの設定を更新する
gitの所有者が誰なのかを設定する。git config
を使用します。 既に設定している人は飛ばしてください。
$ git config --global user.name "XXXX"
$ git config --global user.email "XXXX@gmail.com"
git config
は、どのようにGitが機能するか制御できる設定をすることができます。
今回の例はユーザーの名前とメールの設定。
SSHの設定をする
~/ .ssh / configのファイルを変更して、sshの設定を変更します。
open ~/.ssh/config
ファイルが存在しない場合
$ touch ~/.ssh/config
SSH Configファイルを編集
~/.ssh/config
ファイルを開いたら、以下の内容に編集して保存
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
これで、次に行う設定ができるようになります。
ssh-agentに鍵の登録
鍵を作成したら、ssh-agentに鍵を渡します。
ssh-agentの詳しい説明は、ssh-agentを利用して、安全にSSH認証を行うの記事が参考になりました。
ssh-agentに値を渡すコマンドは以下のように書きます
$ ssh-add -K [鍵の場所]
つまり、
$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/xxxx/.ssh/id_rsa: #Gitのパスフレーズを入れる
Identity added: /Users/xxxx/.ssh/id_rsa (XXXX@gmail.com)
ssh-agent
にMacに鍵が登録され、次回以降も自動で呼び出されるようになります。
ssh-agentに鍵の登録できたか確認
$ ssh-add -l
4096 SHA256:XXXXXXX/XXXXXXXXXXXX/XXXX XXXXXX@gmail.com (RSA)
JupyterLabでGitHubを使う
cloneする
GitHub上
GitHubで新しく作成したレポジトリのSSH keyをコピー
JupyterLab上
メニューバー→Git
→clone
→先ほどコピーしたSSH keyをペースト
cloneが成功したら、次はpushできるか試す。
Pushできるか試す
jupyterlab で commit
commitするために新しいファイルを作成 File
→New
→Notebook
を追加
JupyterLabでcommit
jupyterlabでpush
リロードボタンを押した後に、↑印の雲マーク(push)を押せばpushできます。
最後に
JupyterLabのGitHub連携情報が少なかったので記事を書いてみました。
JupyterLabはまだ発展途上のサービスですのでリロードをきちんと行えていないと、GitHubとの通信でバグが起きたりします。Git・GitHubなどの外部サービスを使う時はリロードは必ずやってくださいね!
ではまた!