SIerからWeb系に転職したやつの日記

タイトルの通り大手SIerからWeb系に転職した、世間一般的には変な奴のブログです。技術的な成長記録を書いていこうと思います。筆者とともに成長するブログです。今は初心者のような内容しか書いてませんが、そのうち上級者のようなブログになってるはずです。

Raspberry PiでSSH接続、名前解決、リモートデスクトップ。家以外で遊ぼうとしてる初心者さん必見です

f:id:regponpon:20180223153412j:plain
こないだ出先でRaspberry Piで遊ぼうと思って持って行ったのですが、SSH接続ができずに、何もできなくて持って帰ってくるという悲しい結果になりました。

SSH接続など当然のようにできると思い込んでいて、家で確認すらしていませんでした。。。

ITリテラシーの低い私のような初心者が同じ目に合わないようにまとめておきます。

SSH接続の設定

まずSSH接続というのは何か。

Secure Shell(セキュアシェル、SSH)は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。
Secure Shell - Wikipedia


要するに安全にほかの端末に接続する手段で、接続先にシェルで色々操作できるよってことです。
画面がなくてもノートPCからSSH接続すればRaspberry Piのターミナルで操作してるのと同じことができるよってことです。

f:id:regponpon:20180223153648p:plain
↑こんな感じでWindowsからRaspberry Piにシェルで接続できるようにします。
(ちなみに透けて見えるデスクトップの背景は私の愛車です)

Linuxの世界ではよく使われるみたいなので覚えておきました。
しかしRaspberry PiではデフォルトでSSHが無効になっております。
これを有効にするためには設定が必要です。

まずRaspberry Piのターミナル上で

$ sudo raspi-config

と打って、実行します。

f:id:regponpon:20180223151829p:plain

するとこんな画面に来るので、ここでカーソルキーで
5. Interfacing Options
を選択し、Enterキーで進みます。

f:id:regponpon:20180223152112p:plain


するとこのようなメニューに進むので、
P2 SSH
を選択してEnterキーを押します。


f:id:regponpon:20180223152207p:plain

SSHを有効にする旨のメッセージが出るので、「はい」を設定します。

SSH接続の有効化は以上です。
再起動することによって、SSH接続ができるようになりますが後述のホスト名で接続する設定はしておいたほうがいいです。
あと、ユーザのパスワードも変更しておいたほうがいいです。外のネットワークにもし繋いだら簡単に乗っ取られてしまいます。

パスワードの変更は

f:id:regponpon:20180223151829p:plain

から、
1. Change User Passwordからできます。
以降の設定が不要だとしても最低限ここまでしておくべきでしょう。

ホスト名でSSH接続するための設定(WindowsからRaspberry Pi

こちらはIPアドレスではなくRaspberry Piのホスト名(任意のマシンの名前みたいなもの)で接続できるようにするための設定です。
なぜこれが必要かというと、デフォルトだと参加したネットワークに応じて自動的にIPアドレスを取得して設定するようになってますので、結局モニターなどにつないでIPアドレスを本体から確認する必要が出てしまうためです。
もし家でしか使わないなら、毎回調べるか、IPアドレスを固定化すればいいと思います。

しかしIPアドレスを固定化してしまうと、外に出た時のネットワークに対応できない、有線LANで直接端末に接続する場合などもいちいち設定しなくてはならないといった問題が生じます。

そんな時にホスト名で接続できるようにしておけばIPアドレスに関係なくSSH接続できるようになります。

Raspberry Pi側で編集する内容としては、/etc/hostsと/etc/hostnameの二つです。

以下のコマンドでhostsファイルをvimで開きます。
vimの使い方は以下の過去記事を参考にしてください。
regpon.hatenablog.com

$ sudo vim /etc/hosts

f:id:regponpon:20180223154221p:plain

赤枠の箇所を、
好きなホスト名.local
にします。

私の場合はraspberrypi.localですね

また、同様に以下のコマンドでhostnameファイルをvimで編集します。

$ sudo vim /etc/hostname

f:id:regponpon:20180223154458p:plain

↑の図のようにhostsで設定したホスト名と同じものを記載します。
私の場合はここもraspberrypi.localですね。

ここまで来たらRaspberry Piを再起動します。

ちなみにコマンドでは

$ reboot

で再起動できます。

UIから操作する場合は画面左上のラズベリーマークからShutdown...を選択し、再起動できます。

これでSSH接続ができるようになってます。

接続してみよう

・・・設定は終わったんですがWindowsの場合はこれだけではホスト名で接続できない場合があります。私もそうでした。
多くの方は接続できるかもしれません。その違いはiPhoneiPodiPadユーザかどうかですね。

そうiTunesがあればいけます。あってもできない人は再インストールしてください。

www.apple.com

iTunesに入っているBonjour(ボンジュール)というソフトがあればできるようになるんです。
はてなキーワードによると

Appleが提案した、設定を必要としないネットワーク技術。物理的にネットワークと繋ぐだけで、自動的にネットワークを検出・認識する。
Apple社独自のネットワーク技術AppleTalkの代替技術だが、IETFのZeroconfワーキンググループで標準化提案が為されている。


【特徴】
DHCPサーバーが無い環境でもAPIPA(Automatic Private IP Addressing)を使ってIPアドレスを設定する
DNSサーバーが無い環境でも名前解決できるように、Multicast DNSを使用する
ネットワークサービスを探索するためにDNSSRVレコードを使用する

今回特筆すべきは特徴の2行目、DNSサーバーが無い環境でも名前解決できるように、Multicast DNSを使用するという点です。
そう、DNSなくても名前解決してくれるんです。名前解決にはDNSがないと無理だと思ってました。

名前解決とは、簡単に言うとホスト名→IPアドレスの変換をしてくれる技術のことです。

なのでiTunesを入れておきましょう。私も3月の新しい会社ではiPhoneが支給されるみたいなので入れておいて損はないかな。

あとは肝心の接続するためのアプリケーションを入れておきましょう。
これはTeraTermが一般的なんじゃないかなと思います。

ja.osdn.net


インストールしたら、起動して先ほど設定したホスト名を使ってこのように接続します。

f:id:regponpon:20180223160017p:plain

これでOKをクリックしたら、以下のような認証画面が表示されます。
f:id:regponpon:20180223160204p:plain

ユーザ名はデフォルトでは「pi」となってます。

パスワードは先ほどの手順で変更していればそれを、変更していないのであれば「raspberry」です。

入力したらOKを押すだけです。これで接続できたはずです。

PCとRaspberry Piを直接優先LANで接続して、ブリッジ接続するための設定

これはハブなどがなくてPCは無線LAN、PCのLANポートとRaspberry PiのLANポートを有線LANで接続する場合に必要なテクニックです。
この接続方式だとRaspberry Piからインターネットにつながらないので、PCの無線LAN側のネットワークにブリッジ接続してインターネットにつながるようにしようって話です。

ちょっと言葉だとイメージがつきにくいので適当な図を作ってみました。
f:id:regponpon:20180223162419p:plain

まぁこんな感じでPCの中でRaspberry Piとつないでるネットワークとルーターとつながっているネットワークに橋渡しをしてあげましょうよってことです。

わかりにくかったらすみませんが、別に理解しなくても作業はできます。

コントロールパネル>ネットワークと共有センター>アダプターの設定の変更を開きます。

f:id:regponpon:20180223163044p:plain

あとはWi-Fiなどの無線LANネットワークアダプタRaspberry Piと接続している有線LANのネットワークアダプタを二つとも選択し、右クリックし、ブリッジ接続を選択するだけ。

これでパソコンから有線LANで直接SSH接続し、Raspberry Pi側は無線LANにつながっていなくてもRaspberry Pi側からもインターネットにつながります。

リモートデスクトップでアクセスする設定

リモートデスクトップすることで、Raspberry Piを直接GUI(画面付きのUIみたいな感じ)で操作できるため、ディスプレイを持っていく必要もなくなります。
Raspberry Piはメモリが1GBしかないし、CPUもいいものではないのでリモートデスクトップだと動作がもっさりして文木ではありますが、ちょっとした確認などにときに画面が欲しくなりますよね。

そのためにもこの設定はしておくことお勧めします。

こちらは以下のQiitaを参考にしました。
qiita.com

まずはRaspberry Piで以下のコマンドを実行し、xrdpというものをインストールします。(もちろん以上の設定をされた方はSSH接続したシェル上でもできます!)

$ sudo apt-get update
$ sudo apt-get install xrdp

リモートした際にJISキーボードでも入力できるように配列を設定し、xrdpを再起動します。

$ cd /etc/xrdp/
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0210411.ini
$ sudo service xrdp restart

あとはWindows側からリモートデスクトップを起動して、Raspberry PiIPアドレスまたは前述の手順で設定したホスト名を入力します。

リモートデスクトップの起動はWindowsキー+Rでmstscと打ってEnterで起動できます。
f:id:regponpon:20180223164155p:plain


接続ボタンを押したらxrdpの画面が出ると思います。
f:id:regponpon:20180223164318p:plain


そしたらこんな感じでユーザ名とパスワードを入力すれば、Raspberry PiGUI的にリモート接続できます。
f:id:regponpon:20180223171015p:plain


ふぅーこんな感じで外で遊べるようになったのでこれから捗りそうですね。
今度は電子工作の入門編、LEDチカチカその名も「Lチカ」を試したいと思います。

あー楽しいw