LoginSignup
11
7

More than 1 year has passed since last update.

NanoPi NEO2 インストールとインターネット越しSSH

Last updated at Posted at 2020-09-14

はじめに

~ NanoPi NEO2 quick launch and remote SSH access over the Internet ~
ラズパイよりも一回り以上ちいさい、とてもかわいいけどパワフルなNanoPi NEO2を開封からちゃちゃっと立ち上げて、remote.itをインストールしてインターネット越しにSSH接続してみます。

NanoPiとは

名前から想像する通り、Raspberry Piライクなシングルボードコンピューターです。小さいけれど豪華、それでいて汎用性の高いハードウェア構成、かつ不要なものは削ぎ落としたシンプルなコンピューターです。

開封、ハードウェアの準備

開封、Micro SDカード、ヒートシンク、電源そしてLANケーブルを準備

  • Micro SDカード、今回はとりあえずclass10の16GB
    photo_2020-09-13_01-38-07.png

  • 裏に見えるAllwinner h5はクアッドコア64ビットのCortex A53、ヒートシンクをネジ+ナットx4で装着
    photo_2020-09-13_01-38-03.pngphoto_2020-09-13_01-38-13.png

  • 電源、ラズパイ2Bに使っていた2Aくらいのやつ、USB Micro-B

photo_2020-09-13_20-47-54.png

  • LANケーブル、DHCPでIPアドレスを取得できる環境へ接続

  • おまけ:ラズパイ(Raspberry Pi 2B)との比較
    photo_2020-09-13_01-38-10.png

armbian OSを準備

  • まずはイメージファイルをダウンロード:

armbian : https://www.armbian.com/

より、[Download]−[NanoPi NEO 2]を選択。WebページをCtlf+Fで検索すると簡単。
【注意】上記検索で「NanoPi NEO 2 Black」が先にでてきますが間違えないように。
Armbian Busterをダウンロードしてみます。
直リンク: https://www.armbian.com/nanopi-neo-2/
スクリーンショット 2020-09-13 2.22.05.png

Micro SDカードのフォーマットとOSの書き込み 

  • Micro SDカードをフォーマット
    なにげによく使う「SD Card Formatter」でMicro SDカードをフォーマット
    スクリーンショット 2020-09-13 2.18.39.png

  • OSの書き込み
    armbianのサイトにも書き込みツールが紹介されていますが…今回はラズパイでおなじみ「Raspberry Pi Imager」を使ってみました。
    スクリーンショット 2020-09-13 2.30.07.png

「CHOOSE OS」からメニュー一番下「Use custom」で先ほどダウンロードした「Armbian Buster」を、
スクリーンショット 2020-09-13 2.19.18.png
「CHOOSE SD Card」から先ほどフォーマットしたMicro SDカードを選択
スクリーンショット 2020-09-13 2.21.00.png
最後に「WRITE」で書き込み開始

電源投入

前項で準備したMicro SDカードを挿入、有線LANケーブルをHUB、ルーターに接続して電源を接続します。
少し待つとOS起動しDHCPでIPアドレスを取得している、はず。
LANのルーターの管理画面か、もしくは「Fing」などのツールでIPアドレスを確認します。
次は同一LAN上の他のコンピューターからターミナルソフトでSSHアクセスしてみます。

SSHでログイン

ターミナルソフトを起動し、SSHでアクセスします。
同梱の簡易ドキュメントに記載の通り。

  • 初期ユーザー名:root
  • 初期パスワード:1234
xxx@macbookpro:~ $ ssh -l root 192.168.xxx.xxx

ログインに成功すると以下のようなバナーとrootパスワード設定のプロンプトが表示されます。

 _   _ ____  _   _   _              ____  
| \ | |  _ \(_) | \ | | ___  ___   |___ \ 
|  \| | |_) | | |  \| |/ _ \/ _ \    __) |
| |\  |  __/| | | |\  |  __/ (_) |  / __/ 
|_| \_|_|   |_| |_| \_|\___|\___/  |_____|
                                          
Welcome to Armbian 20.08.1 Buster with Linux 5.8.5-sunxi64

System load:   0.13 0.15 0.08  	Up time:       5 min		Local users:   2            	
Memory usage:  22 % of 475MB  	IP:            192.168.xxx.xxx
CPU temp:      31°C           	
Usage of /:    10% of 15G    	

Last login: Wed Sep  2 19:10:59 2020
New to Armbian? Documentation: https://docs.armbian.com Support: https://forum.armbian.com

New root password: 

新しいrootのパスワードを設定、ロケールとキーボードを自動設定するか質問されるので「Y」
続いて新しい一般ユーザー作成を促すプロンプトが表示されるので、好きなユーザー名とパスワードを設定(例:demo)

New root password: ********
Repeat password: ********
Detected timezone: Asia/Tokyo (JST, +0900)
Do you want to set locales and console keyboard automatically from your location [Y/n]
Generating locales: ja_JP.UTF-8

Console keyboard layout: jp

Creating a new user account. Press <Ctrl-C> to abort

Please provide a username (eg. your forename): demo
Creating a new user account. Press <Ctrl-C> to abort

Create password: ********
Repeat password: ********

名前の入力を促されますが、空白で良いでしょう、そのままEnter

Please provide your real name (eg. John Doe): 
Dear demo, your account demo has been created and is sudo enabled.
Please use this account for your daily work from now on.

root@nanopineo2:~# 

で、コマンドプロンプトが表示され初期設定完了です。

SSH設定の変更

rootでのログインを無効化します。

root@nanopineo2:~# sudo vi /etc/ssh/sshd_config

この行をコピー&編集してコメントアウトし「no」に変更、上書きして保存

# PermitRootLogin yes
PermitRootLogin no

一度リブートして新しいユーザーでログインし直します。

root@nanopineo2:~# shutdown -r now

少し時間をおいて再度SSH接続、今度は新しいユーザー名「demo」で
先ほどの設定でrootユーザーではもうログインできないはずです(確認しておきましょう)

xxx@macbookpro:~ $ ssh -l demo 192.168.xxx.xxx
demo@192.168.1.29's password: xxxxxxxx

 _   _ ____  _   _   _              ____  
| \ | |  _ \(_) | \ | | ___  ___   |___ \ 
|  \| | |_) | | |  \| |/ _ \/ _ \    __) |
| |\  |  __/| | | |\  |  __/ (_) |  / __/ 
|_| \_|_|   |_| |_| \_|\___|\___/  |_____|
                                          
Welcome to Armbian 20.08.1 Buster with Linux 5.8.6-sunxi64

System load:   0.00 0.00 0.00  	Up time:       3 days 15:13		
Memory usage:  20 % of 475MB  	IP:            192.168.xxx.xxx
CPU temp:      40°C           	
Usage of /:    11% of 15G    	

Last login: Tue Sep 15 00:28:53 2020 from 192.168.1.183
demo@nanopineo2:~$ 

無事一般ユーザーでログインできました。

nanopiのアップデート

OSとパッケージのアップデートを確認、適用します。updateで少し、upgradeは結構時間がかかるので、upgradeを流したら少し放置ですね。

demo@nanopineo2:~$ sudo apt update
demo@nanopineo2:~$ sudo apt upgrade

2021.10.19 更新
これ以降の手順を従来のconnectd_installerを使う手順からDevice Packageを使う手順に更新しました。

インターネット越しのSSHアクセス設定(remote.itの導入)

FWのポート公開をせずともインターネット越しに遠隔アクセスできる「remote.it」サービスを設定します。
remote.itのアカウント作成とnanoPiへのインストールを実施します。
remote.itが何か、アカウントの作成方法については以下記事が参考になると思います。
インターネット世界の「どこでもドア」remote.it
ラズパイにRPi-Cam-Web-Interfaceとremote.itで遠隔Web IPカメラ
ラズパイにScreenlyとremote.itで遠隔デジタルサイネージ
これは魔法か?! インバウンドポートを全閉したAWSのサーバに接続する方法
remot3.itでインバウンド全閉じ状態のマシンにインターネット経由でアクセスしてみた

今回の構成の概略はこんな感じです。

overview.png

remote.it アカウント作成(① remoteit Cloudで実施)

  • アカウントのサインアップ: remote.itホームページからGet Started → Sign up

signup.png

nanoPi へのremote.it インストール(② remoteit ターゲットにソフトウェアをインストール)

  • nanoPiへのインストール方法: remote.itホームページからDownload → Device Packages

download00a.png

See More Optionsから他のパッケージを探します。

remote.it Device Package for Pi OS (ARM64)が今回利用するパッケージ、ラズパイ用ですが大丈夫。

download02a.png

矢印のドキュメントボタンを押して手順を確認します。

arm64rpi.png

Download用のURIをコピー、以下nanoPiのコンソールでcurlコマンドでダウンロードを実行します。

demo@nanopineo2:~$ curl -LkO https://downloads.remote.it/remoteit/v4.13.5/remoteit-4.13.5.arm64.rpi.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  100k  100  100k    0     0   142k      0 --:--:-- --:--:-- --:--:--  142k
demo@nanopineo2:~$ 

パッケージ一覧をアップデートし、remoteitパッケージをインストールします。

demo@nanopineo2:~$ sudo apt update -y
demo@nanopineo2:~$ sudo apt install ./remoteit-4.13.5.arm64.rpi.deb

以下のように出力されればインストールは成功です。

.
.
.
.../remoteit-4.13.5.arm64.rpi.deb を展開する準備をしています ...
remoteit (4.13.5) を展開しています...
remoteit (4.13.5) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/connectd.service → /etc/systemd/system/connectd.service.

--------------------- Claim this device ---------------------

Use the code XXXXXXXX to register this device to your account

--------------------- Claim this device ---------------------

demo@nanopineo2:~$ 

ターゲットデバイス登録のためのコード(XXXXXXXXの部分)が表示されるのでコピーします。
これは次項のデバイス登録作業で必要になります。
またこのClaim Codeは24時間の期限があるため、続けて事項の作業を進めてください。

nanoPi をターゲットデバイスとして登録(③remoteit Desktop appからの操作)

remoteitパッケージをインストールしたnanoPiをremoteit ターゲットとして動作させるためのデバイス登録作業を行います。この作業によりnanoPiはremoteit ターゲットとなりインターネットを超え遠隔からの接続ができるようになります。
今回はDesktop appを利用しますが、Mobile appも利用可能です。

作業用のPCにremoetit Desktop app をインストール/起動しサインインします。
desktop.png

左ペイン上部のデバイス登録ボタン + をクリックします。
plus.png

レジストレーションコードを入力する画面が開きます。nanoPi上での操作の最後で入手したClaim Codeを入力し、REGISTERをクリックします。
claim.png

レジストレーションが成功すると下記のようなメッセージが表示されます。
succeed02.png

ここではMy Deviceという名前でデバイスが登録されました。リスト上に表示されていると思いますので探してみましょう。もし表示されていない場合は矢印部分から再読み込みをしてみてください。
mydevice.png

nanoPi 上のデバイス名を編集(③remoteit Desktop appからの操作)

先程登録されたデバイスをクリックします。
service01.png

デバイスの詳細画面が表示されます。Editからデバイスの名前を編集します。
service02.png

デバイス名の編集アイコンからお好きなデバイス名に変更可能です。この例では nanopi_JPN_01 とします。
service03a.png
service03b.png

nanoPi 上のサービスを追加(③remoteit Desktop appからの操作)

デバイスに戻り、サービス追加[+]をクリックします。
service04.png

追加するサービスの編集画面が表示されます。
[SERVICE TYPE]として[SSH]を選択し[SAVE]をクリックします。
service05.png

続けて再度[+]をクリックし、nanoPiの状態ダッシュボード「armbian monitor」も追加します。HTTPを選択し、今度はわかりやすいようにSERVICE NAMEを変更し、さらにSERVICE PORTを実際のデバイス上での待受ポート番号8888に編集します。
service06.png

少し待つとサービス一覧画面に追加されたサービスが表示されます。グレーから濃い黒い字に表示変わるとオンライン状態です。もし変化がない場合はリロードしてみてください。
service07.png

インターネット越しにremote.it経由でSSH接続する

ターゲットデバイスに接続するには、remoteit Web appからプロキシ接続する方法と、remoteit Desktop appを利用してP2P接続する2種類の方法があります。

プロキシ接続の場合

remote.itホームページからSign in
うまく設定できていると以下のようなデバイスがオンラインになっていると思います
web01.png

デバイス名をクリックすると以下のようなモーダル画面が表示されます
web02.png

Serviceの部分Secure shell terminalをクリックし接続情報を取得します
web03.png

All othersから文字列をコピーしPCのターミナルに貼り付け、この例ではユーザー名をdemoに変更していよいよ接続してみます。
SSH接続ソフトを利用する場合は取得したホスト名とポート番号をそれぞれ入力してみてください。

xxx@macbookpro:~ $ ssh -l demo proxyXX.xxx.xx -p nnnnn
The authenticity of host '[proxyXX.xxx.xx]:nnnnn ([xxx.xxx.xxx.xxx]:nnnnn)' can't be established.
ECDSA key fingerprint is SHA256:/zzzzzzzzyyyyyyyyxxxxxxxxwwwwwwwwvvvvvvvvvv.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[proxynn.rt3.io]:xxxxx,[aaa.bbb.ccc.ddd]:ppppp' (ECDSA) to the list of known hosts.
demo@proxyXX.xxx.xx's password: xxxxxxxx 
 _   _ ____  _   _   _              ____  
| \ | |  _ \(_) | \ | | ___  ___   |___ \ 
|  \| | |_) | | |  \| |/ _ \/ _ \    __) |
| |\  |  __/| | | |\  |  __/ (_) |  / __/ 
|_| \_|_|   |_| |_| \_|\___|\___/  |_____|
                                          
Welcome to Armbian 20.08.1 Buster with Linux 5.8.6-sunxi64

System load:   0.00 0.00 0.00  	Up time:       3 days 16:20		
Memory usage:  20 % of 475MB  	IP:            192.168.xxx.xxx
CPU temp:      42°C           	
Usage of /:    11% of 15G    	

[ General system configuration (beta): armbian-config ]

Last login: Tue Sep 15 00:56:34 2020 from xxx.xxx.xxx.xxx
demo@nanopineo2:~$ 
demo@nanopineo2:~$ 
demo@nanopineo2:~$ 

接続できました!

P2P接続の場合

remoteit Desktop app のDevicesに表示されるデバイスから接続したいサービスを選択します。この例では先程同様にSecure shell terminal(SSH)に接続してみます。サービスを選択し、[ADD TO NETWORK]をクリックします。
p2p01a.png

下記表示に変わったら接続の準備完了です。この段階でPC上のremoteit Desktop appはPC上で「待機状態」として接続を待ち受けています。アプリケーションからの実際にアクセスする段階でターゲットへのP2P接続を作成します。
p2p02a.png

ADDRESSに表示されている文字列をコピーしPCのターミナルに貼り付け、この例ではユーザー名をdemoに変更していよいよ接続してみます。
SSH接続ソフトを利用する場合は取得したホスト名とポート番号をそれぞれ入力してみてください。初回は下記のような補助ウインドウが表示されます。USERNAMEにnanoPi上のユーザー名を設定しSAVEします。再度コピーすると文字列内にユーザー名も埋め込まれていると思います。
p2p03.png

xxxx:~ xxx$ ssh -l demo nanopi_jpn_01-secure-shell-terminal.at.remote.it -p 30000
The authenticity of host '[nanopi_jpn_01-secure-shell-terminal.at.remote.it]:30000 ([127.0.0.1]:30000)' can't be established.
ECDSA key fingerprint is SHA256:/zzzzzzzzyyyyyyyyxxxxxxxxwwwwwwwwvvvvvvvvvv.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[nanopi_jpn_01-secure-shell-terminal.at.remote.it]:30000' (ECDSA) to the list of known hosts.
demo@nanopi_jpn_01-secure-shell-terminal.at.remote.it's password: xxxxxxxx
 _   _ ____  _   _   _              ____  
| \ | |  _ \(_) | \ | | ___  ___   |___ \ 
|  \| | |_) | | |  \| |/ _ \/ _ \    __) |
| |\  |  __/| | | |\  |  __/ (_) |  / __/ 
|_| \_|_|   |_| |_| \_|\___|\___/  |_____|
                                          
Welcome to Armbian 20.08.1 Buster with Linux 5.8.6-sunxi64

System load:   0.11 0.04 0.01  	Up time:        2:48		
Memory usage:  29 % of 475MB  	Zram usage:    14 % of 237Mb  	IP:            192.168.xxx.xxx
CPU temp:      33°C           	
Usage of /:    22% of 15G    	

Last login: Tue Oct 19 17:56:08 2021 from 127.0.0.1
demo@nanopineo2:~$ 
demo@nanopineo2:~$ 
demo@nanopineo2:~$ 

こちらも接続できました!

まとめ

インターネット越しでもポートを公開せずFW設定も不要、またDHCP運用でどのネットワークに移動してもremote.it経由で接続性を確保できます。携帯電話ネットワーク越しでも接続できますので遠隔地への設置とアクセスを実現できます。nanoPiは元々HDMI出力が無いですのでコンソール接続のためにIPアドレスを固定して運用しがちだと思いますが、remote.itがあればDHCPのまま運用して容易に別ネットワークに移動させる、なんて事も可能だと思います。(でなくともremoteit appsからローカルIPアドレスが見れるのが地味に便利です)

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7