その1 SSH を使うまで
Raspberry Pi や BeagleBone Black がなにやら流行っているらしいので、私もやってみたくなりました。
でも、なんかスペックが微妙だなぁ・・・
ん? Hummingboard? なんじゃこりゃ・・・
CPUは ARM7 で 2 コア、メモリ 1GB に GPU まで積んでる・・・
スペックは良いなぁ・・・ どこんだろ・・・えっイスラエル!?w
スペック表です→ http://www.solid-run.com/products/hummingboard/linux-sbc-specifications/
というわけで、今話題の小型コンピュータのマイナーだけどすごいやつ hummingboard へ xbmc を導入していくのですが、 実は、最初から xbmc をインストールすることもできるんです。 ですが、Linux の勉強のために ArchLinux をインストールして、 そこへいろいろ環境構築して最終的に xbmc を導入してみます。
以前はイスラエルから買うしかないようだったのですが、日本でも買えるようになりました。
ここから買いました PETAPICO SHOP (http://www.petapico.biz/)
私は「HummingBoard-i2 AC/SDセット」を購入しましたが、今思えば「HummingBoard-i2eX」の方が良かったなぁ
と思ってます。皆さんはお財布と相談して好きなものを買ったら良いと思います。
ちなみに http://www.solid-run.com/ ここが本家、SolidRun 社のホームページです。
何をしたいのか? によるのですが、私はメディアセンターにしようと思いましたので、以下のものを買いました。
ちなみにRasPi type B のケースが使えます。
Linux での使用実績がありましたので購入してみました。
Wifi で接続したい方は必須ですが、有線LAN で構わないならいらないですね。あと、正直遅いので有線にした方が良いかもしれません。
以前はめんどくさかったんですが、Ignition というインストールツールが本家より発表されまして、
いろいろな OS が簡単に導入できるようになりました。
詳しくは、以下のホームページ(PICOPETA SHOP さんのページです)に書いてありますので、
さくっと Arch を導入しましょう。
(16) CuBox-i/HummingBoardの簡単インストーラー Ignition が登場
windows 同様に、いきなりリセットしたり電源抜くと linux も壊れます。
以下のコマンドでリブート、シャットダウンを行って下さい。
めんどくさいな・・・と思ってる方も使っているうちになれます。
私がそうでしたから・・・w
リブートはこのコマンドで! # reboot シャットダウンはこのコマンドだよ! # shutdown -h now
非常にクセが強いエディタなので、操作方法を知らないと”まず使えません”w
基本的な使い方、「i で挿入モード」、「ESC でコマンドモードへ :w で書き込み、:q で終了」
この程度は google 先生に「vi 使い方」とでもお願いして予習しておくと良いと思います。
基本的に CUIでの作業ですので、キーボードを打ち込んで作業を行います。 また、 Windows しか触ったこがない方は Linux の流儀みたいなものを あらかじめ予習しておくと良いと思います。
/home/ユーザー名 と同じ意味です。
これも、google 先生に「パーミッション」で検索して軽く予習しておいた方がいいです。 まあ、最初はパーミッションというもので、アクセス権を決めているんだな・・・程度で良いと思います。
などのファイル操作の基本コマンドは結構多用しますので、覚えておいて損は無いです。 また、パーミッションを意識してください。基本的に自分のホーム以外のファイルを 操作したい場合は sudo が必要になります。
初回ログインは、
でログインします。
まずは、最新の状態にします。 Ubuntu では apt-get でしたが、Arch は pacman です。 (ちなみに読み方はパックマンでいいんだよね?)
# pacman -Syu 終わったら、リブート # reboot
「標準では英語キーボードのキーマップになっているので、
vi すらまともに使えないといった困ったことになります
(試しに”コロン :”を押してみてください。どうです? : キーが使えないと vi がまともに使えないないので困るわけです)。
まずは一時的に変更
# loadkeys jp106
永続化させるには、vi で新規に以下のファイルを作ります。vi の予習をしておいて下さい・・・
わかりにくいですが ESCキーを押したあとに コロン:の後、wを入力します。
もし、編集中にわけがわからなくなったら、ESC を押せばコマンドモードへ移行しますので、
:q!
を入力すれば、保存せずに終了しますので、仕切り直してください。
# vi /etc/vconsole.conf
以下を書き込む。
KEYMAP=jp106
ついでに忘れないうちに root のパスワードを変更しておきましょう。
# passwd root (パスワード確認のため2回入力しますよ。)
タイムゾーンを日本にします。
# timedatectl set-timezone Asia/Tokyo
あ、あと nano を使いたいので nano をインストールしておきます。
# pacman -S nano
必須ではありませんが、マシンのホスト名を変更したければ、 以下のファイルを書き換えてください。
ちなみにホスト名って言うのは、[root@alarm ~]# の alarm の部分です。 Windows 側から見えるマシン名もこれになりますので、 ご自身のわかりやすい名前に変えてもいいでしょう。
# vi /etc/hostname
alarm となっていますので、例えば、 arch_xbmc と書き換えて保存すると、ホスト名が arch_xbmc に変わるわけです。
これでリブートしてみてください。
次回ログイン時の root のパスワードが変わっていますので注意して下さい。
ログイン後 キーマップが切り替わっているかをチェックしましょう。
(コロン : をうってみてきちんと表示されればOKです。)
root でいじるのはお行儀が悪いので作業用のユーザを作りましょう。
具体的なユーザ名があった方がわかりやすいと思いますので
ここでは「ntaka」というユーザ名で説明します。
ユーザを追加して wheel グループに入れる。 (wheel グループとは管理者に昇格できるグループらしいです)
# useradd -m -g wheel ntaka # passwd ntaka (パスワード確認のため2回入力しますよ。)
おなじみの sudo ですね。 ちなみに、私 linux 初心者なので sudo って標準だと思ってましたよ。 sudo ってあとから入れる物だったんですね。というか、Arch がそうなだけなのかねぇ・・・
# pacman -S sudo
ユーザを sudoers に登録します
# visudo
visudo で vi での編集にうつります。”# User privilege specification”という行を探してユーザを追加します。
(vi の使い方を思い出してください)
## User privilege specification # root ALL=(ALL) ALL ntaka ALL=(ALL) ALL ←これを追加!
必須ではありませんが、sudo コマンドの際にパスワードを入力したくないならば、 以下の”Same thing without a password”をコメントアウト(# を外す)します。
## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ←これをコメントアウト
再起動後、先ほど作成したユーザでログインし直します。
これ以降は CUI の最初が [root@alarm ~]# から [ntaka@alarm ~]$ といった感じなってると思います。
SSH を使うに当たって IP を固定したいと思います。
(固定しなくていい方は、読み飛ばしてください。)
試しに以下のコマンドを打ってみてください。
[ntaka@alarm ~]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default ・・・省略 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether d2:53:b5:00:52:ff brd ff:ff:ff:ff:ff:ff inet 192.168.24.73/24 brd 192.168.24.255 scope global eth0 valid_lft forever preferred_lft forever ・・・省略
現在どのようなネットワークが設定されているかを確認できるはずです。
この例で行けば・・・
ネットワークにある程度詳しい方ならばご存じかもしれませんが、 なぜ何にも設定していないのにインターネットに接続できているかと言えば、 DHCP というものが有効になっているからです。
さて、どのユニット(初心者なりに調べてみると Arch というか Systemd ってやつじゃ、デーモンとかをユニットと呼ぶらしい)
が DHCP の機能を提供しているかと言えば、
systemd-networkd
といわれるユニットです。試しに状態を表示させてみましょう。
[ntaka@alarm ~]$ systemctl UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable F sys-devices-platform-serial8250-tty-ttyS0.device loaded active plugged /sys/de sys-devices-platform-serial8250-tty-ttyS1.device loaded active plugged /sys/de sys-devices-platform-serial8250-tty-ttyS2.device loaded active plugged /sys/de sys-devices-platform-serial8250-tty-ttyS3.device loaded active plugged /sys/de sys-devices-soc0-soc.1-2000000.aips\x2dbus-2000000.spba\x2dbus-2020000.serial-tt sys-devices-soc0-soc.1-2100000.aips\x2dbus-2188000.ethernet-net-eth0.device load sys-devices-soc0-soc.1-2100000.aips\x2dbus-2194000.usdhc-mmc_host-mmc1-mmc1:aaaa sys-devices-soc0-soc.1-2100000.aips\x2dbus-2194000.usdhc-mmc_host-mmc1-mmc1:aaaa sys-devices-soc0-soc.1-2100000.aips\x2dbus-21f0000.serial-tty-ttymxc3.device loa sys-devices-soc0-sound\x2dhdmi.27-sound-card1.device loaded active plugged /sy sys-devices-soc0-sound\x2dspdif.26-sound-card0.device loaded active plugged /s sys-module-configfs.device loaded active plugged /sys/module/configfs sys-module-fuse.device loaded active plugged /sys/module/fuse sys-subsystem-net-devices-eth0.device loaded active plugged /sys/subsystem/net -.mount loaded active mounted / dev-mqueue.mount loaded active mounted POSIX Message Queue File Sys run-user-1000.mount loaded active mounted /run/user/1000 sys-fs-fuse-connections.mount loaded active mounted FUSE Control File System sys-kernel-config.mount loaded active mounted Configuration File System sys-kernel-debug.mount loaded active mounted Debug File System tmp.mount loaded active mounted Temporary Directory systemd-ask-password-console.path loaded active waiting Dispatch Password Requ systemd-ask-password-wall.path loaded active waiting Forward Password Requests session-14.scope loaded active running Session 14 of user ntaka ・・・省略
ずらーっと、現在のユニット一覧が表示されるはずです。
探してみると・・・
systemd-networkd.service loaded active running Network Service
という項目が確認できるかと思います。
systemd-networkd の状態を確認したければ、
[ntaka@alarm ~]$ systemctl status systemd-networkd * systemd-networkd.service - Network Service Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2014-12-29 11:19:52 JST; 26min ago Docs: man:systemd-networkd.service(8) Main PID: 207 (systemd-network) Status: "Processing requests..." CGroup: /system.slice/systemd-networkd.service `-207 /usr/lib/systemd/systemd-networkd
というわけで、この謎のユニット systemd-networkd が DHCP を有効にして、 IP アドレスを割り当ててくれているわけです。
さてさて、Archlinux ではネットワークを設定する方法が大きく分けて、 この systemd-networkd と netctl とあるようです。 「どっちが良いのか?」は初心者の私にはよくわからないのですが、 標準で有効になっている systemd-networkd を使ってみたいと思います。
systemd-networkd (日本語) を見て頂けるとわかるのですが、
とありますので、一番優先されるらしい /etc/systemd/network を見てみましょう
[ntaka@alarm ~]$ ls /etc/systemd/network eth0.network
どうやら、eth0.network というのが、設定ファイルのようです。
そこで、これを書き換えちゃいましょう!
[ntaka@alarm ~]$ sudo nano -w /etc/systemd/network/eth0.network [Match] Name=eth0 [Network] DHCP=both
Name=eth0
が、この設定ファイルを使用するデバイスの名前
DHCP=both
が DHCP を有効にしている項目です。
そこで・・・
[Match] Name=eth0 [Network] Address=192.168.24.62/24 Gateway=192.168.24.1 DNS=192.168.24.1
この様に変更します。
(当然ですが、アドレスはご自身の環境に合わせて変えてくださいね!)
再起動して ip addr show コマンドで IPが固定されたかを確認してみましょう。
さて、SSH を導入します。これによって Windows から、いろいろできるようになります。 詳細は Secure Shell (日本語) をご覧下さい。
なんか初めから入っているようなので、 検索をしてみて以下のように表示されれば、初めから入っています。
[ntaka@alarm ~]$ systemctl | grep sshd sshd.service loaded active running OpenSSH Daemon
もし入っていなければ、以下のコマンドでインストールして、デーモンを有効にしてください。
インストール [ntaka@alarm ~]$ sudo pacman -S openssh デーモンを有効にする [ntaka@alarm ~]$ sudo systemctl start sshd デーモンを初回起動する [ntaka@alarm ~]$ sudo systemctl enable sshd
試しにログインしてみましょう!
と、行きたいのですが、クライアントソフトをインストールする必要がありますねw
私は、PuTTY(ごった煮版です) を使用しているのですが、皆さんは気に入ったものを使用して頂ければと思います。
というように、あっさりつながったと思います。
PuTTY の簡単な使い方ですが、詳細は google 先生に聞いてもらうとして、簡単に説明しますと
まず、現状でこんなにあっさり接続できてしまうのが問題ですw
というのも、簡単に接続できるということは、悪意のある第三者にも容易に接続されやすいということだからです。
まあ、気持ちはわかりますが、 そういう方でも root くらいは無効にしておいた方が良いと思われます。 なぜなら、正規のユーザは root でログインできなくとも、sudo su でいつでも root へ昇格できますので、root でのログインは必要ありません。 逆に、侵入者から考えたら root は必ず存在するユーザですし、 root を取ってしまえばやりたい放題なわけで正規ユーザにはデメリットしかありません。
と、こういうわけです。残る関門はご自身の設定した多分短いパスワードだけです。
少し怖くなってきたでしょ?w
対策は設定ファイルをいじるだけなので、パッパとやってしまいましょう。
以下のコマンドで、設定ファイル /etc/ssh/sshd_config を開きます。
[ntaka@alarm ~]$ sudo nano -w /etc/ssh/sshd_config
デフォルトのポートが 22 なので危険です。変更するポートは、他が使っていない 4 桁以上( 65535 以内)がいいと思います。
例えばですが 1234 と設定するならば、
#Port 22 を Port 1234 と変更します。
次に、ルートでのログインを無効化しましょう。
#PermitRootLogin yes を PermitRootLogin no と変更します。
さらに、パスワード無しの接続も禁止します。
#PermitEmptyPasswords no をコメントアウトし PermitEmptyPasswords no と変更します。
[ntaka@alarm ~]$ sudo systemctl restart sshd
これで、ssh を再起動して、PuTTY で再度ログインしてみてください。 ポート設定等が 22 のままでは失敗するはずです。
もし、さらに強固なセキュリティが必要ならば 公開鍵認証 でのログインを強要できますが、 この辺はホームネットワーク内での運用では過剰かとも思うので、興味がある方のみが行えば良いと思います。
まず、ssh-keygen で鍵を作ります。
[ntaka@alarm ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/ntaka/.ssh/id_rsa): Enter passphrase (empty for no passphrase): ←空(Enter)でも良いです Enter same passphrase again: ←空(Enter)でも良いです Your identification has been saved in /home/ntaka/.ssh/id_rsa. Your public key has been saved in /home/ntaka/.ssh/id_rsa.pub. The key fingerprint is: cd:9c:1f:ef:63:f8:69:5e:83:f2:cf:a4:46:2f:54:aa ntaka@alarm The key's randomart image is: +---[RSA 2048]----+ | | | | | | | + . . | | S = . o | | . *. | | .=ooo.| | E++B+.| | .BB+ | +-----------------+
これで、鍵ファイルが /home/ntaka/.ssh へ生成されます。
公開鍵 id_rsa.pub を authorized_keys というファイルへ結合します。
[ntaka@alarm ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
必要の無くなった、ファイルを削除し authorized_keys ファイルのパーミッションを自分以外アクセスできないように変更します。
[ntaka@alarm ~]$ rm .ssh/id_rsa.pub [ntaka@alarm ~]$ chmod 600 .ssh/authorized_keys
次に、秘密鍵 id_rsa をご自身の PC へ持ってくる必要があるのですが、どうしたものでしょうね・・・
samba を構築していれば、あっさりコピーできるのですがまだ構築してませんし。
というわけで SSH でコピーしちゃいましょう。
まあ、「こういう方法もあるのだな」というのも勉強ですね。
Windows のコマンドプロンプトを開いて、PuTTY がインストールされているフォルダへ移動してください。
pscp.exe というファイルがあるはずです。これが転送ソフトです。
PuTTY へ入力している設定が・・・
だとして、話を進めます。
Windows のコマンドプロンプトですよ! pscp.exe -pw "123456789" -P 1234 ntaka @192.168.24.62:.ssh/id_rsa . id_rsa | 1 kB | 1.6 kB/s | ETA: 00:00:00 | 100%
はい、これで putty のフォルダに id_rsa が転送されたはずです。
早いうちに必要の無くなった、秘密鍵を削除しておきます。
[ntaka@alarm ~]$ rm .ssh/id_rsa
次に PuTTY で扱えるように秘密鍵を変換します。
先ほどの PuTTY があるフォルダに puttygen.exe というアプリがあるはずですので、
それを起動して、先ほどの id_rsa を読み込んで、「秘密鍵の保存」で保存してください。
あとは、putty のカテゴリの「接続」-「SSH」-「認証」 の 「認証のためのプライベートキーファイル」 へ
先ほど puttygen で作ったファイルを設定します。
では、早速 SSH でログインします。
login as: ntaka Authenticating with public key "imported-openssh-key" Last login: Mon Dec 29 14:41:01 2014 from 192.168.24.51 [ntaka@alarm ~]$
どうでしょうか? この様に 公開鍵を使用してログインできたでしょうか?
ログインできたら、公開鍵認証以外を禁止してしまいましょう。
[ntaka@alarm ~]$ sudo nano -w /etc/ssh/sshd_config
#PasswordAuthentication yes を変更して PasswordAuthentication no とします。
SSH を再起動して、パスワードでのログインが許可されないのを確認してください。
[ntaka@alarm ~]$ sudo systemctl restart sshd
はい、これで公開鍵認証以外は蹴られてしまう設定がなされました。 ここまでやっておけば、ホームネットワークでは完璧だと思います。