RaspberryPiを母艦に
RaspberryPiがどんなネットワークにいようと、raspiのIPアドレスを調べることなくmacbookからssh接続できるようにする。
これで、外出先でノマドしてても家にあるraspiの状態が見れるし、開発もできちゃうぞ
Github:https://github.com/mainyaa/RaspberryPi-Mothership
必要なもの
AWS/GCEにmicroやnanoインスタンス。月額300円ぐらい
簡単な説明
raspiからssh-tunnelインスタンスに常にssh Portforwardしている状態にします。いわゆるSSH Tunnelです。
[macbook] <-> [(port:22)ssh-tunnel(port:20022)] <-> [raspi]
環境構築
raspi
ssh-keygen
-
cat ~/.ssh/id_rsa.pub
- ssh公開鍵をコピー
ssh-tunnel
- ssh-tunnelインスタンスを立ち上げ、タイプはmicroやnano
- ssh接続し、piユーザー追加、ssh公開鍵を貼り付け
ssh ssh-tunnel
useradd -s /bin/zsh -u 10000 -m -d /home/users/pi pi
sudo su - pi
mkdir .ssh
-
vim .ssh/authorized_keys
- ssh公開鍵を張り付け
macbook
- ~/.ssh/configに以下を追加。[]の部分は適宜書き換え
~/.ssh/config
Host ssh-tunnel
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User pi
Hostname [SSH-TUNNEL IP]
LogLevel QUIET
IdentityFile ~/.ssh/google_compute_engine
- 繋がるか確認
ssh ssh-tunnel
raspi
- ~/.ssh/configに以下を追加。[]の部分は適宜書き換え
~/.ssh/config
Host ssh-tunnel
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User [USERNAME]
Hostname [SSH-TUNNEL IP]
LogLevel QUIET
IdentityFile ~/.ssh/google_compute_engine
- 繋がるか確認
ssh ssh-tunnel
- 起動スクリプトを追加。Debianの起動スクリプト用意するのは面倒くさいからGithubにあげておきました
-sudo apt-get install -y autossh
-git clone https://github.com/mainyaa/RaspberryPi-Mothership.git
-sudo cp ./RaspberryPi-Mothership/init.d/ssh_tunnel /etc/init.d/
-sudo cp ./RaspberryPi-Mothership/sbin/ssh_tunnel /usr/sbin/
-sudo insserv ssh_tunnel
-sudo reboot
macbook(実際に繋いで見る)
- 1度ssh-tunnelに接続。(ssh-tunnelがGCEの場合のみ)
gcloud compute --project "[PROJECT_ID]" ssh --zone "asia-east1-b" "ssh-tunnel"
macbookからraspiに接続
ssh -o 'ProxyCommand ssh ssh-tunnel nc %h %p' -p 20022 pi@localhost
- これでRaspberryPiが母艦になりました!どこからでもssh-tunnelごしに繋がる!
つっこみ大歓迎
間違ってたり、もっと便利な方法があったら教えて下さい!PullReqも歓迎です!
勉強会&もくもく会やります
5/15にRaspberry Pi勉強会&もくもく会を開催します。
初心者もそうじゃない方もRaspberry Piで学んで遊ぼうというゆるい会です。発表者募集中
勉強会するとRaspberry Piで遊びたくなるよね。じゃあ、勉強会のあとにもくもくしたらいいじゃない!ということで、2部構成にしてみました。