Jetson Nano 2GBのセットアップ ~SSH接続編~


Jetson

Jetson Nano 2GBのセットアップ ~SSH接続編~

はじめに

Jetson Nano 2GB とは NVIDIA社によって販売されている小型のエッジコンピューティング用のGPUコンピューティングボードです。これを使って Kaggleの学習をさせるためにセットアップします。今回はSSHで自分のPCから接続する設定について書きます。
私が所持しているPCはMacであるためMacOSを前提としたSSHの接続を行います。

用意するもの(Amazonのリンク付き)

SSHとは

Secure Shellの略であり、ネットワークに接続されたデバイスを安全に遠隔操作する手段です。
SSHにより適切な設定を行えば公開鍵暗号方式と呼ばれる通信暗号方式で通信を行うことが可能です。

公開鍵、秘密鍵とは何か

A,Bが通信する際、

1.Aが秘密鍵から公開鍵を作成しBに渡す
2.Bが、その公開鍵を使って通信内容を暗号化する
3.暗号化された文書をAが受け取る
4.Aが秘密鍵を用いて復号し中身を確認する


秘密鍵、公開鍵を作成

1
2
PS> ssh-keygen -t rsa -b 4096
PS> cd ~/.ssh/

$ ssh-keygen -t rsa -b 4096
まず、クライアント側で公開鍵と秘密鍵を作成します。-tオプションで暗号化方式を決めます。-bで鍵のビット数を指定できます。

これで、ホームディレクトリ直下に.ssh/ができ、この中に秘密鍵ファイルid_rsa、公開鍵ファイルid_rsa.pubが作成されます。

クライアント側(macOS, linuxの方)

最初からsshは使えるはずです.

秘密鍵、公開鍵を作成

1
2
3
$ ssh-keygen -t rsa -b 4096
$ cd ~/.ssh/
$ cat id_rsa >> id_jetson

$ ssh-keygen -t rsa -b 4096
まず、クライアント側で公開鍵と秘密鍵を作成します。-tオプションで暗号化方式を決めます。-bで鍵のビット数を指定できます。

これで、ホームディレクトリ直下に.ssh/ができ、この中に秘密鍵ファイルid_rsa、公開鍵ファイルid_rsa.pubが作成されます。

id_rsaid_jetsonに名前変更

アクセス権限の変更

1
2
3

$ chmod 600 id_jetson
$ chmod 700 ~/.ssh


ホスト側

公開鍵をホストへ渡す

id_rsa.pubをUSBメモリやgoogle dirve等を使ってクライアント側の~/.sshに設置してください。
(パスワード認証方式を使った方法もあります。)

公開鍵を追加

公開鍵の名前をauthorized_keysに変更し、権限を変更してください。

1
2
3
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ chmod 700 ~/.ssh


クライアント側 コマンドでsshアクセス

以下のコマンドでアクセス可能です。秘密鍵の場所を指定し、ユーザIDとIPアドレスを指定してください。
IPアドレスは,ヘッドレスデバイスモードの場合,192.168.55.1が割り当てられています。

1
$ ssh –i ~/.ssh/id_jetson [ログインユーザID]@[IPアドレス]

サーバーに入ることができたら完了です。



.ssh/config

クライアント側の~/.ssh/configというファイル名でテキストファイルを作成し、テキストエディタでこれを開き、以下のように編集しましょう。

1
2
3
4
Host jetson_usb_mode
HostName IPアドレス
User ユーザー名
IdentityFile ~/.ssh/id_jetson
1
$ ssh jetson_usb_mode

同様に入れたら完了です。



VScodeからJetson Nanoに接続する。

VScodeとは

Visual Studio CodeはMicrosoftが開発しているWindows、Linux、macOS用のソースコードエディタです。コード編集の他、git、githubコントロールやデバッガ、インテリセンスなどなど他にもここでは語り尽くせないほどたくさんの便利機能、拡張機能を備えたエディタです。あくまでエディタなのでVScode自体にプログラムをコンパイルして実行する能力はありませんが、設定次第でそれらの操作が全てVScodeから行えるようになります。

VScodeをインストール

こちらからダウンロードしてください。

このページからそれぞれ自分の作業用PCの環境にあったVScodeをダウンロードしてください。

拡張機能:Remote-Developmentを取得

VScodeはそのまま使うとローカルに保存されたディレクトリを開き、そこでソースコードを編集することが可能です

さらに、拡張機能であるRemote-Developmentを導入することで、
リモートで接続した先のマシン内のソースコードをローカルに存在しているファイルかのように取り扱うことができるようになる拡張機能です。

Remote-Development
Remote-WSLRemote-SSHRemote-Container
の3つからなる拡張機能で、今回はこのうちのRemote-SSHを使うことで、Jetsonにアクセスしたいと思います。

よくわからないと思うのでやってみましょう。

Remote-SSH

VScodeを開いてください。

サイドバーのアイコンで、四角形が4つ並んでいるアイコンを選択してください。
ここから様々な拡張機能の管理を行うことができます。

Remote-Development拡張機能をインストールしたら、
VScodeのサイドバーに、ディスプレイにマークがついているアイコンが増えているはずです。

こちらを選択し、一番上のプルダウンからRemoteを選択します。

ここに.ssh/configに書き込んだHost nameが表示されているはずです。

こちらをクリックしてSSH接続が完了するのを待ちます。

完了すると、別の新しいウインドウでJetson内に接続した状態のVScodeのワークスペースが立ち上がるはずです。

終わりに

次回はKaggleの環境を構築していきます。