OpenSSH 7.2で入ったssh-keygenの新機能を試す

OpenSSH 7.2リリースネタ続きです.

ここではssh-keygenの新機能を試してみます.

鍵のコメント変更

先ずは鍵のコメント変更.

* ssh-keygen(1): allow ssh-keygen to change the key comment for all
supported formats.

ssh-keygen(1): すべてのサポートする形式について ssh-keygen が
鍵のコメントを変更できるようにする

manやhelpを見ると-cオプションのようです.

    -c      Requests changing the comment in the private and public key files.  This operation is only supported for RSA1 keys.  The program will prompt for the
            file containing the private keys, for the passphrase if the key has one, and for the new comment.
$ ~/usr/local/openssh-portable/bin/ssh-keygen --help |& grep '\-c'
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]

適当な鍵を作って書き換えてみました.test commentchange commentに書き換わりました.手で書き換えるとミスすることもあるのでいいかもしれません.

$ ssh-keygen -t ed25519 -N '' -C "test comment" -f ./testkey
$ cat ./testkey.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHBYXP3okrQO7hejY7f0d6PvjD++puLFuvozI5Trxv8D test comment
$ ~/usr/local/openssh-portable/bin/ssh-keygen -c -C "change comment" -f ./testkey
Key now has comment 'test comment'
The comment in your key file has been changed.
$ cat testkey.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHBYXP3okrQO7hejY7f0d6PvjD++puLFuvozI5Trxv8D change comment

標準入力からの鍵の読み込みと鍵指紋の表示

-fオプションのファイルの代わりに-を指定すると標準入力から鍵を読み込みます.ファイル指定の場合は秘密鍵も公開鍵もいけますが,標準入力からだと公開鍵のみのようです.

$ cat ./testkey.pub | ~/usr/local/openssh-portable/bin/ssh-keygen -lf -
256 SHA256:v7zpU4SoiUIIEqWhaftbuUy2t2Tuny9Ld5WVrDD2Sjs change comment (ED25519)
$ cat ./testkey | ~/usr/local/openssh-portable/bin/ssh-keygen -lf -
(stdin) is not a public key file.
$ ~/usr/local/openssh-portable/bin/ssh-keygen -lf ./testkey.pub
256 SHA256:v7zpU4SoiUIIEqWhaftbuUy2t2Tuny9Ld5WVrDD2Sjs change comment (ED25519)
$ ~/usr/local/openssh-portable/bin/ssh-keygen -lf ./testkey
256 SHA256:v7zpU4SoiUIIEqWhaftbuUy2t2Tuny9Ld5WVrDD2Sjs change comment (ED25519)

host鍵全部とかはこんな感じで行けますね.

$$ cat /etc/ssh/ssh_host_*_key.pub | ~/usr/local/openssh-portable/bin/ssh-keygen -lf -
521 SHA256:WdWtCQFxH+Xno527Cl+PomQ5ZKj81/NUzIzYOckXsWA root@x220 (ECDSA)
256 SHA256:rONiKpthZZORiwOKpfNVcrMp+FgBhfE20GuCuuNrgA8 root@x220 (ED25519)
4096 SHA256:o2xTrmNmkd2RwNybmaO+TWIFw6xeoZmXmbLdhC1gIpU root@x220 (RSA)

ファイルに含まれる複数の公開鍵の指紋表示

* ssh-keygen(1): allow fingerprinting multiple public keys in a
file, e.g. “ssh-keygen -lf ~/.ssh/authorized_keys” bz#1319

ssh-keygen(1): ファイルに含まれる複数の公開鍵の指紋表示を
できるようにする. つまり
“ssh-keygen -lf ~/.ssh/authorized_keys” bz#1319

こちらの場合も秘密鍵の鍵指紋は取得できないです.ちなみにエラーなどは出ずスキップされます.

$ ssh-keygen -t ed25519 -f /tmp/hoge_key
$ ssh-keygen -t ed25519 -f /tmp/hoge2_key
$ cat /tmp/hoge_key.pub /tmp/hoge2_key.pub > /tmp/keys.pub
$ ~/usr/local/openssh-portable/bin/ssh-keygen -l -f /tmp/keys.pub
256 SHA256:/fZluTkiB9Ogv3mT9mniaZ2YPbL2XkMwge+bQ0r74dg mk@x220(ED25519)
256 SHA256:iHSZ0ucbwTR0VLScSF5l29iBFQIT13I+fELvue/N+xM mk@x220(ED25519)
$ cat /tmp/hoge_key.pub /tmp/hoge2_key > /tmp/keys.mix
$ ~/usr/local/openssh-portable/bin/ssh-keygen -l -f /tmp/keys.mix
256 SHA256:/fZluTkiB9Ogv3mT9mniaZ2YPbL2XkMwge+bQ0r74dg mk@x220(ED25519)
$ cat /tmp/hoge_key.pub /tmp/hoge2_key /tmp/hoge2_key.pub> /tmp/keys.mix
$ ~/usr/local/openssh-portable/bin/ssh-keygen -l -f /tmp/keys.mix256 SHA256:/fZluTkiB9Ogv3mT9mniaZ2YPbL2XkMwge+bQ0r74dg mk@x220(ED25519)
256 SHA256:iHSZ0ucbwTR0VLScSF5l29iBFQIT13I+fELvue/N+xM mk@x220(ED25519)

#見づらいですね><

-vを付けると秘密鍵のところでnot a public keyと言われるようになります.

$ ./ssh-keygen -l -v -f /tmp/keys.mix
256 SHA256:/fZluTkiB9Ogv3mT9mniaZ2YPbL2XkMwge+bQ0r74dg mk@x220(ED25519)
+--[ED25519 256]--+
|            ..   |
|           .  .  |
|            .o   |
|         . . .o  |
|        S o +  . |
|         . = +. .|
|          o O.Oo=|
|           *=^oX*|
|           +@E&Bo|
+--[SHA256]---+
debug1: /tmp/keys.mix:2: not a public key
debug1: /tmp/keys.mix:8: not a public key
256 SHA256:iHSZ0ucbwTR0VLScSF5l29iBFQIT13I+fELvue/N+xM mk@x220(ED25519)
+--[ED25519 256]--+
|       .+.+**+*+.|
|     . = = +o*oB.|
|    o = + o +.B.o|
|   . + + .    .+o|
|    . . S      o+|
|         o     E.|
|        .       o|
|               +.|
|               o@|
+--[SHA256]---+



OpenSSH 7.2のsshdに入ったauthorized_keysの新オプションを試す

OpenSSH 7.2がリリースされました :)

ということで気になった以下の新機能を試してみます.

* sshd(8): add a new authorized_keys option “restrict” that includes
all current and future key restrictions (no-*-forwarding, etc.).
Also add permissive versions of the existing restrictions, e.g.
“no-pty” -> “pty”. This simplifies the task of setting up
restricted keys and ensures they are maximally-restricted,
regardless of any permissions we might implement in the future.

sshd(8): authorized_keys のオプションに “restrict” を追加する.
これは, (no-*-forwarding などの) 現在と将来のすべての制限を含む.
さらに, 現在の制限の許可バージョンも追加する. つまり,
“no-pty” -> “pty”. これにより, 制限付きの鍵の設定のタスクが
単純化し, 将来実装するすべての許可に関係なく
鍵が最大に制限されていることを圃場できる.

prefix以外は規定値のままでbuid

$ sudo apt install build-essentialbuild-essential
$ sudo apt build-dep openssh
$ git pull
$ ./configure --prefix=$HOME/usr/local/openssh-portable
$ make
$ make install

適当に7.2のデーモンを起動

$ `pwd`/sbin/sshd -D -p 22222
$ ps -ef|grep openssh-portable
mk       21788 14885  0 00:46 pts/7    00:00:00 /home/mk/usr/local/openssh-portable/sbin/sshd -D -p 22222

適当な鍵を作って~/.ssh/authorized_keysに登録してログインテスト.

$ ssh-keygen -t ed25519 -N '' -f ./testkey
$ cat testkey.pub >> ~/.ssh/authorized_keys
$ ssh localhost -p 22222 -i ./testkey

authorized_keysの該当鍵行の頭に

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFm5sR98q060FFlT1cpBVbwm0caShCYGl39D5k9PCenB mk@x220

restrictを追記して

restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFm5sR98q060FFlT1cpBVbwm0caShCYGl39D5k9PCenB mk@x220

ssh 7.2で接続を試します.

$ /home/mk/usr/local/openssh-portable/bin/ssh localhost -p 22222 -i ./testkey
PTY allocation request failed
printenv|grep -i ssh
SSH_CLIENT=::1 56910 22222
SSH_CONNECTION=::1 56910 ::1 22222
exit
Shared connection to localhost closed.

sshd側の機能なのでssh 7.1で繋いでも制限されます.

$ ssh localhost -p 22222 -i ./testkey
PTY allocation request failed
printenv|grep -i ssh
SSH_CLIENT=::1 56910 22222
SSH_CONNECTION=::1 56910 ::1 22222
Shared connection to localhost closed.

restrict,pty のようにptyを追記して-X/-Yを試すとptyが使えてXは制限されているのが確認できました.

$ grep restrict authorized_keys
restrict,pty ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFm5sR98q060FFlT1cpBVbwm0caShCYGl39D5k9PCenB mk@x220
$ ssh localhost -p 22222 -i ./testkey -X
X11 forwarding request failed
mk@x220:~$ xeyes
Error: Can't open display:

これまではずらずらと制限を書く必要がったのがシンプルに書けるようになりそうです :)

以下の件は別エントリにて


Raspberry Pi 4周年とRaspberry Pi 3の発売

祝4周年!
そして新しいRaspberry Pi 3 Bが発売になりました.

4年あっという間でしたね当初はなかなか入手出来ませんでしたが今は大分改善されて買いやすくなっていいですね.
そしてRaspberry Pi 3 BRaspberry Pi 3 B.(A+の基板で無線内蔵も出たら良さそう).新たにWi-Fi/Bluetoothが内蔵されました.CPUもARM64になったのでそっちを試してみたい場合も良さそうです.ケースは流用できそうですがLED位置が変更になってるので LEDが見えなくなる場合もありそう.無線があるってことで日本では技適が通ってなくて使えない……と良くなるのですが,未だ通ってないけど近日中に取れるみたいです!

しかし電源が2.5Aというのがかなりきつい気がします.家にある一番大きな電流を流せるmicroUSB B Cableでも2.4Aですから…….
私はとりあえず手持ちに5V 3AのACアダプタがあったのでこれをGPIO経由で流し込むようにしたら行けそうかなと思っています.通販サイトを見ると2.5A対応のACアダプタも併売されているのでそれを買ったほうが無難そうですね.

なお,技適は通る見込みだから英国などから次回に買おうという人向けに注意が.

ということで国外で買った電源は電力安全法の検査通ってないので電源は国内で買いましょう.PSEマークの付いたものを.

ところでUSB電源の規格ですが,多分こんな感じです.

USB 2.0
- 500mA
USB 3.0
- 900mA
USB Battery Charging 1.2
- 1.5A
USB Power Delivery Specification( http://www.usb.org/developers/powerdelivery/ )
- 12V/3A (36W)
- 12V/5A (60W)
- 20V/3A (60W)
- 20V/5A (100W)
※microUSBでは3A迄

Raspberry Pi 3 Bの5V 2.5Aは範囲外な感じがします.USB PDは3AまであるけどUSB Cの規格みたいですし.火を噴いたりしないかちょっと不安です.

OSの方ですが,Rasbian jessie/Ubuntu MATEが新しくなっているようです.(既存環境はupgradeするだけでok)そしてちょっと前からRasbian wheezyが居なくなっています(ftp siteにはアーカイブが残っていますけど).wheezyはjessieより軽いので初代を使うときとか用途によってはいいんですけどね.Raspberry Pi 3 Bでwheezyが動かせるかも気になります.
#そういえばRabianのサポートはどうなっているんだろう?Debianと同じならいいけどこの感じだともっと速くに打ち切られそうで怖い.

しかし久々に新製品を追いかける楽しみを味わいました.
あ,Raspberry Pi古いのが余っちゃったよって方はください.




GNU版xargsの区切り文字を指定できる-d optionが便利

よくスペース混じりのファイルなんかの処理にfind -print0xargs -0でNULL区切り文字を使いますが,

$ find . -type f | xargs ls
ls: ./ho にアクセスできません: そのようなファイルやディレクトリはありません
ls: ge にアクセスできません: そのようなファイルやディレクトリはありません
./fuga  ./piyo
$ find . -type f -print0 | xargs -0 ls
./fuga  ./ho ge  ./piyo

今回間に更に処理を入れて使えませんでした.
逐次実行でよかったらxargs -n1 -I{} rm '{}'みたいにして括ればいいんですが,

$ find . -type f -print | grep -v fuga | xargs -n1 -I{} ls '{}'
./ho ge
./piyo

今回は一度に処理したかったのでこの方法は使えません.xargsのmanを見るとdelimiterを指定できるのに気づきました.

   --delimiter=delim, -d delim
          Input  items are terminated by the specified character.  The specified delimiter may be a single character, a C-style character escape such as \n, or
          an octal or hexadecimal escape code.  Octal and hexadecimal escape codes are understood as for the printf command.    Multibyte  characters  are  not
          supported.  When processing the input, quotes and backslash are not special; every character in the input is taken literally.  The -d option disables
          any end-of-file string, which is treated like any other argument.  You can use this option when the input consists of simply newline-separated items,
          although it is almost always better to design your program to use --null where this is possible.

ということで改行(\n)を指定してやりたかったことが実現できました :)

$ find . -mmin -1440 -type f -print0 | xargs -0n1 file | grep -i audio | cut -f1 -d: | xargs -d\\n ls -1tr

OpenSSHのHostKeyにED25519を追加

ふとあるhostにED25519のサーバ鍵がないのに気づいたので作りました.

ファイル名を指定して作るか,

$ sudo ssh-keygen -N '' -f /etc/ssh/ssh_host_ed25519_key
Generating public/private rsa key pair.
Your identification has been saved in ./ssh_host_ed25519_key.
Your public key has been saved in ./ssh_host_ed25519_key.pub.
The key fingerprint is:
f3:55:7f:02:04:92:c3:e0:4c:8c:7a:05:6a:00:28:da root@micro
The key's randomart image is:
+--[ RSA 2048]----+
|=   .+oo.....    |
|o. ..+o +. .     |
|o.o. .o  .  . .  |
|..E .        o . |
|   .    S   . . o|
|         o .   ..|
|          .      |
|                 |
|                 |
+-----------------+

ssh-keygen -Aで足りないものを自動生成してもらいます.-Aの場合鍵指紋が出てこないので`ssh-keygen -lfとかで確認しましょう.

$ sudo ssh-keygen -A
ssh-keygen: generating new host keys: ED25519
$ cat /etc/ssh/ssh_host_ed25519_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYCcWp86jHwcb56mvdFMpCjovBH8eAa99OufTUEYycU root@micro
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key
256 bf:f8:4a:5b:2d:da:72:84:e7:87:25:1b:9d:1c:56:b2  root@micro (ED25519)

規定値で有効になっていると思うけど設定ファイルにも記述してデーモンをreload.

$ grep ed25519 /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_ed25519_key
$ sudo service ssh restart

ed25519で帰ってくるか確認.

$ ssh-keyscan -p 2222 -t ed25519 localhost
# localhost SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
localhost ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYCcWp86jHwcb56mvdFMpCjovBH8eAa99OufTUEYycU

クライアント側のknown_hostsから古いものを消して登録しなおして,

$ ssh-keygen -f ~/.ssh/known_hosts -R [192.168.1.102]:2222
$ ssh -o HostKeyAlgorithms=ssh-ed25519 micro
The authenticity of host '[192.168.1.102]:2222 ([192.168.1.102]:2222)' can't be established.
ED25519 key fingerprint is SHA256:H8TMbIG65XqBAeiST98ThJq/Ux7RHerpMGXnxVJ7EjE.
+--[ED25519 256]--+
|   . .   .. E.   |
|  . o . .=..o.   |
| o o o o oB+ o   |
|o =   = *o+ = .  |
| + o . %S+.o o   |
|  . o X =...     |
|     + B ..      |
|    o o o        |
|     . .         |
+----[SHA256]-----+
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.1.102]:2222' (ED25519) to the list of known hosts.
 

後はDNSに登録したり……ってed25519はエラーになるみたいですね.

$ ssh-keygen -r example.org -f /etc/ssh/ssh_host_ed25519_key
export_dns_rr: unsupported algorithm and/or digest_type

ちなみにED25519はOpenSSH 6.5p1で入りました.

ownCloudの同期が動かなくなって困る

ownCloudを便利に使っているのですが,ふと気づくと同期されていない.ステータスを見ると最後の同期が8時間前.タスクマネージャーのアイコンは!マークが付いて「不明な状態」となっています.

20160226_19:02:52-398

ログを見てもよくわからない.

WebやAndroidそして別のLinuxマシンは問題ないようです.ということは多分この端末の問題.
問題の環境はDebian stretch testing amd64のowncloud 7.0.12~dfsg-2です.

一旦ownCloudを終了して設定ファイルだけ退避(対象ファイルはそのまま)して設定を作りなおしてみました.

$ mv ./.local/share/data/ownCloud ./.local/share/data/ownCloud-backup
$ owncloud --logwindow

とりあえず同期出来たようです.

rc-gui最新版のビルドメモ(20160226)

Rasbian jessieのGUIな設定ツールのrc-guiの言語ファイルの項目が増えているみたいなので試してみました.

Wi-FiのCountry Code辺りが増えてるみたいなんだけど画面上に見当たらないです.
対応デバイス繋がないと出ないのかな?

20160226_00:02:02-20553

訳はこんな感じ?

20160226_01:02:13-6226

とりあえずrc-guiはビルドに必要なパッケージ増えてたのでメモしておきます.
controlには未だ載ってないよう.

$ sudo apt-get build-dep rc-gui
$ git pull
$ ./configure --prefix=/opt/local
   :
configure: error: Package requirements ( gtk+-2.0 >= 2.18.0              libxml-2.0) were not met:
 
No package 'libxml-2.0' found
   :
$ sudo apt install libxml2-dev
$ ./configure --prefix=/opt/local
$ make
$ sudo make install

ブートUSBメモリなどを作るmkusbを試してみる

USBメモリなどにisoを書き込んで起動デバイスを作れるとても便利なUNetbootinというツールがあります.
しかし,Debian jessie/stretchに入っていません.

なんでだろうとBTSを見るとうまく動かないバグがあるようです.(UEFI環境でNG?)

ざざっと眺めていてmkusbという同じようなツールがあるのを見かけたので試してみました.

環境

Debian stretch testing amd64です.

$ screenfetch
         _,met$$$$$gg.           mk@x220
      ,g$$$$$$$$$$$$$$$P.        OS: Debian testing-updates sid
    ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 4.3.0-1-amd64
   ,$$P'              `$$$.      Uptime: 9h 7m
  ',$$P       ,ggs.     `$$b:    Packages: 3622
  `d$$'     ,$P"'   .    $$$     Shell: bash 4.3.42
   $$P      d$'     ,    $$P     Resolution: 1366x768
   $$:      $$.   -    ,d$$'     WM: Awesome
   $$\;      Y$b._   _,d$P'      WM Theme: awesome
   Y$$.    `.`"Y$$$$P"'          CPU: Intel Core i5-2540M CPU @ 3.3GHz
   `$$b      "-.__               GPU: Mesa DRI Intel(R) Sandybridge Mobile
    `Y$$                         RAM: 9768MiB / 15934MiB
     `Y$$.                      
       `$$b.                    
         `Y$$b.                 
            `"Y$b._             
                `""""           
 

Ubuntuはppaがあります.DebianはUbuntuのppaが使えます.他のLinuxディストリビューションでは導入スクリプト( mkusb-installer )が用意されています.

導入(ppa)

source.listを登録します.apt edit-sourcesコマンドでdeb http://ppa.launchpad.net/mkusb/ppa/ubuntu trusty mainを登録します.

$ sudo apt edit-sources mkusb
$ sudo chmod +r /etc/apt/sources.list.d/mkusb.list
$ cat /etc/apt/sources.list.d/mkusb.list
# "mkusb/install-to-debian - Community Help Wiki"
https://help.ubuntu.com/community/mkusb/install-to-debian
deb http://ppa.launchpad.net/mkusb/ppa/ubuntu trusty main
$ gpg --keyserver keyserver.ubuntu.com --recv-keys 54B8C8AC
gpg: 鍵54B8C8ACをhkpからサーバkeyserver.ubuntu.comに要求
gpg: 鍵54B8C8AC: 公開鍵"Launchpad PPA for MKUSB"をインポートしました
gpg:           処理数の合計: 1
gpg:             インポート: 1  (RSA: 1)
$ gpg --fingerprint 54B8C8AC
pub   4096R/54B8C8AC 2014-08-14
 フィンガー・プリント = 29D7 6ADA 2D15 A87B F4C6  8B82 3729 8274 54B8 C8AC
uid                  Launchpad PPA for MKUSB
 
$ gpg -a --export 54B8C8AC | sudo apt-key add -
OK
$ apt-key list|grep -A1 54B8C8AC
pub   4096R/54B8C8AC 2014-08-14
uid                  Launchpad PPA for MKUSB

パッケージリストの更新とmkusbパッケージの導入

$ sudo apt update
$ sudo apt install mkusb mkusb-nox
$ dpkg -L mkusb
/.
/usr
/usr/share
/usr/share/mkusb
/usr/share/mkusb/mkusb-start
/usr/share/mkusb/restore
/usr/share/mkusb/mkusb-st2
/usr/share/mkusb/usb-pack_efi.tar.gz
/usr/share/mkusb/grub.cfg
/usr/share/mkusb/maybe-problems.txt
/usr/share/mkusb/backup
/usr/share/icons
/usr/share/icons/mkusb.svg
/usr/share/icons/hicolor
/usr/share/icons/hicolor/scalable
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/scalable/apps/mkusb.svg
/usr/share/icons/hicolor/48x48
/usr/share/icons/hicolor/48x48/apps
/usr/share/icons/hicolor/48x48/apps/mkusb.png
/usr/share/doc
/usr/share/doc/mkusb
/usr/share/doc/mkusb/README.Debian
/usr/share/doc/mkusb/copyright
/usr/share/doc/mkusb/changelog.Debian.gz
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/mkusb.8.gz
/usr/share/applications
/usr/share/applications/mkusb.desktop
/usr/sbin
/usr/sbin/mkusb
$ dpkg -L mkusb-nox
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/mkusb-nox
/usr/share/doc/mkusb-nox/copyright
/usr/share/doc/mkusb-nox/changelog.Debian.gz
/usr/sbin
/usr/sbin/mkusb-nox

実行例

メニューから起動するか,

$ sudo -H /usr/sbin/mkusb

のようにして起動します.書き込むイメージが決まっている場合は引数に指定できます.イメージには.gzや.xzも指定可能なので展開の手間が省けます.

$ sudo -H /usr/sbin/mkusb ./alpine-3.3.1-x86_64.iso

スプラッシュが出て,

20160224_06:02:32-32496
20160224_06:02:36-32565

メニューが出てきます.cloneやwipeも可能です.
20160224_06:02:45-32658

書き込み先のデバイスは間違えないようにしましょう.間違えるととても悲しいことになります.ちなみにSD Cardスロットの/dev/mmcblk0は検出されませんでした.USB-SDアダプタ経由だと出てきました.
20160224_06:02:26-868
20160224_06:02:43-1237

確認画面でチェックを入れて「Go」ボタンで書き込みが始まります.
20160224_06:02:05-2732
20160224_06:02:13-2827
20160224_06:02:17-2960

実行例(nox)

mkusb-noxコマンドを使うと端末で利用できます.nox版では複数のUSBメモリがある場合の選択方法はわかりませんでした.書き込むデバイスだけを差し込むようにするしか無いかもしれません.

$ sudo /usr/sbin/mkusb-nox ./alpine-3.3.1-x86_64.iso
The iso file SHOULD BE loop mounted on a temporary file READ-ONLY:
mount: /dev/loop0 is write-protected, mounting read-only
disk_name_type=label
default grsec|label grsec| _found_ in iso-file
default grsec|label grsec| _found_ in /dev/sdb
 Final checkpoint
Install to /dev/sdb? (y/n)
y
pv "alpine-3.3.1-x86_64.iso"| dd of=/dev/sdb bs=4096 ...
  82MiB 0:00:00 [ 205MiB/s] [========================================================================================================================>] 100%            
20992+0 records in
20992+0 records out
85983232 bytes (86 MB) copied, 4.84297 s, 17.8 MB/s
syncing the drive ...
The default grsec|label grsec| USB device is re-cloned  :-)

問題なく利用できる場合はUNetbootinの方がマルチプラットホームだし使いやすそうです.状況により使い分けるのがいいのかもしれません.

Linux環境でAndroidアプリを利用できるShashlikを試す

Linuxデスクトップ環境でAndroidアプリを利用できるShashlikを試してみました.
Shashlikを導入してAndroidパッケージの.apkを導入すると通常のLinuxアプリケーションのように呼び出せるというものです.
ただし,.apkはx86サポートのものでないといけないようです.
現在は0.9.1が最新で,Kubuntu(KDE Plasma 5)向けとなっています.

以下はShashlikを使ってFlappy Birdが動いている動画です.

Shashlikの導入

今は.debが配布されているのでこれをダウンロードして導入します.入手場所は以下のページから.140MBと結構大きいです.

$ wget http://static.davidedmundson.co.uk/shashlik/shashlik_0.9.1.deb
$ sudo dpkg -i shashlik_0.9.1.deb

/opt/shashlik以下に導入されます.qemuで動くみたいですね.

$ dpkg -L shashlik
/.
/opt
/opt/shashlik
/opt/shashlik/android
/opt/shashlik/android/emulator-user.ini
/opt/shashlik/android/system
/opt/shashlik/android/system/build.prop
/opt/shashlik/android/config.ini
/opt/shashlik/android/kernel-qemu
/opt/shashlik/android/system.img
/opt/shashlik/android/ramdisk.img
/opt/shashlik/android/userdata.img
/opt/shashlik/bin
/opt/shashlik/bin/aapt
/opt/shashlik/bin/ddms
/opt/shashlik/bin/shashlik-install
/opt/shashlik/bin/bios.bin
/opt/shashlik/bin/constants.py
/opt/shashlik/bin/shashlik-run
/opt/shashlik/bin/adb
/opt/shashlik/bin/vgabios-cirrus.bin
/opt/shashlik/bin/emulator64-x86
/opt/shashlik/data
/opt/shashlik/data/shashlik-apps.directory
/opt/shashlik/data/shashlik.png
/opt/shashlik/lib
/opt/shashlik/lib/libc++.so
/opt/shashlik/lib64
/opt/shashlik/lib64/lib64GLES_V2_translator.so
/opt/shashlik/lib64/lib64EGL_translator.so
/opt/shashlik/lib64/lib64OpenglRender.so
/opt/shashlik/lib64/libGLES_V2_translator.so
/opt/shashlik/lib64/lib64GLES_CM_translator.so
/opt/shashlik/lib64/libGLES_CM_translator.so
/opt/shashlik/lib64/libEGL_translator.so
/opt/shashlik/lib64/libut_rendercontrol_dec.so
/opt/shashlik/lib64/libOpenglRender.so

Androidアプリのパッケージを入手

Shashlikの上で動かすAndroidアプリのパッケージを入手します.

Once installed grab any Android application package (APK) from the net.
For example our favourite app, Flappy Bird, can be found here: http://beste-apps.chip.de/android/app/flappy-bird-apk-android-app,cxo.66885070/

ということでここからFlappy Birdを入手しました.

Androidアプリの導入

shashlik-installコマンドを使ってAndroidアプリを導入します.

$ /opt/shashlik/bin/shashlik-install ~/Downloads/com.dotgears.flappybird.apk
Successfully installed Flappy Bird
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
kbuildsycoca4 running...
kbuildsycoca4(19354) VFolderMenu::loadDoc: Parse error in  "/home/mk/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu" , line  1 , col  1 :  "unexpected end of file"
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
Successfully installed Flappy Bird

20160222_17:02:57-19417
これでKDE Plasma 5環境ならスタートメニューに登録されるはずです.

ちなみに,x86じゃない.apkを導入しようとするとこんな感じで怒られました.
20160222_18:02:13-5944

Androidアプリの起動

KDE Plasma 5環境ならスタートメニューに登録されているはずですが,今の環境はawesomeなのでメニューに出てきません.
コマンドラインから起動します.

$ /opt/shashlik/bin/shashlik-run com.dotgears.flappybird FlappyBirds

起動にはそこそこ時間がかかります.

20160222_18:02:35-30707
20160222_18:02:52-31990
20160222_18:02:15-344

起動した後はもたつきなどもなく普通に動く感じです.
ただ,真っ黒な画面のままで起動に失敗することがあります.起動が速くなって安定して動くようになるととても便利そうです.

しかし問題は.apkの入手先ですね.PlayStoreが使えないと苦労しそうです.


Linux Mintのisoファイル改竄と改竄の確認方法


うわぁ……
怖すぎる.

2/20に入手した人はisoファイルを削除.もしOS導入済みの人はネットワークから遮断して必要なデータがあればバックアップの上初期化して導入しなおし(勿論再度入手しなおしたisoファイルで),メールやWebサービス等を利用していたならそちらのパスワード等の変更もとのこと.

入手したisoファイルの確認方法がMD5の方法しか書かれていませんね.
署名ファイルはないのでしょうか?

ftp siteを覗いてみると,

$ w3m -dump http://mirrors.kernel.org/linuxmint/stable/17.3/
Index of /linuxmint/stable/17.3/
 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
../
linuxmint-17.3-cinnamon-32bit.iso                  30-Nov-2015 10:14      1G
linuxmint-17.3-cinnamon-64bit.iso                  28-Nov-2015 18:18      1G
linuxmint-17.3-cinnamon-nocodecs-32bit.iso         30-Nov-2015 21:06      1G
linuxmint-17.3-cinnamon-nocodecs-64bit.iso         30-Nov-2015 18:10      1G
linuxmint-17.3-cinnamon-oem-64bit.iso              01-Dec-2015 09:31      2G
linuxmint-17.3-kde-32bit.iso                       05-Jan-2016 22:57      2G
linuxmint-17.3-kde-64bit.iso                       05-Jan-2016 21:26      2G
linuxmint-17.3-mate-32bit.iso                      30-Nov-2015 10:31      1G
linuxmint-17.3-mate-64bit.iso                      28-Nov-2015 18:19      2G
linuxmint-17.3-mate-nocodecs-32bit.iso             01-Dec-2015 02:43      1G
linuxmint-17.3-mate-nocodecs-64bit.iso             01-Dec-2015 01:01      2G
linuxmint-17.3-mate-oem-64bit.iso                  01-Dec-2015 10:42      2G
linuxmint-17.3-xfce-32bit.iso                      05-Jan-2016 16:41      1G
linuxmint-17.3-xfce-64bit.iso                      05-Jan-2016 15:48      1G
md5sum.txt                                         06-Jan-2016 16:00     958
sha256sum.txt                                      06-Jan-2016 16:03    1406
sha256sum.txt.gpg                                  06-Jan-2016 16:09     181
 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

sha256sum.txt.gpgはあるよう.恐らくsha256sum.txtへの署名ですね.これを入手して確認してみます.

先ずはファイルの入手

$ wget http://mirrors.kernel.org/linuxmint/stable/17.3/sha256sum.txt wget http://mirrors.kernel.org/linuxmint/stable/17.3/sha256sum.txt.gpg

署名を確認してみると,DSA鍵ID 0FF405B2で署名されているよう.

$ gpg --verify sha256sum.txt.gpg sha256sum.txt
gpg: 2016年01月07日 01時06分20秒 JSTにDSA鍵ID 0FF405B2で施された署名
gpg: 署名を検査できません: 公開鍵が見つかりません

鍵サーバから鍵を検索してインポートします.

$ gpg --search-keys 0FF405B2
gpg: "0FF405B2"をhkpサーバkeys.gnupg.netから検索
(1)     Clement Lefebvre (Linux Mint Package Repository v1) <root@linuxmint.co
          1024 bit DSA key 0FF405B2, 作成: 2009-04-29
Keys 1-1 of 1 for "0FF405B2".  番号(s)、N)次、またはQ)中止を入力してください >1
gpg: 鍵0FF405B2をhkpからサーバkeys.gnupg.netに要求
gpg: 鍵0FF405B2: 公開鍵"Clement Lefebvre (Linux Mint Package Repository v1) <root@linuxmint.com>"をインポートしました
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:  15  署名:  52  信用: 0-, 0q, 0n, 0m, 0f, 15u
gpg: 深さ: 1  有効性:  52  署名:  59  信用: 52-, 0q, 0n, 0m, 0f, 0u
gpg: 次回の信用データベース検査は、2018-07-07です
gpg:           処理数の合計: 1
gpg:             インポート: 1

署名を検証すると,DSA鍵ID 0FF405B2で署名された鍵ということがわかります.
※ちなみにこの鍵IDと鍵指紋の確認もしたいのですが,その情報の載っているであろうlinuxmintのsiteは今落ちているようで未確認です.

$ gpg --verify sha256sum.txt.gpg sha256sum.txt
gpg: 2016年01月07日 01時06分20秒 JSTにDSA鍵ID 0FF405B2で施された署名
gpg: "Clement Lefebvre (Linux Mint Package Repository v1) <root@linuxmint.com>"からの正しい署名
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガー・プリント: E1A3 8B8F 1446 75D0 60EA  666F 3EE6 7F3D 0FF4 05B2

チェックサムファイルの署名が正しいことが確認できたら,isoファイルのチェックサムを確認します.これでダウンロードされたisoファイルが正しくダウンロードされたことがわかります.
今回はisoファイルは1つしか入手していません.
入手したlinuxmint-17.3-xfce-32bit.isoの確認が行われ,完了と言われています.

$ ls linuxmint*.iso
linuxmint-17.3-xfce-32bit.iso
$ sha256sum -c sha256sum.txt
sha256sum: linuxmint-17.3-cinnamon-32bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-cinnamon-32bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-cinnamon-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-cinnamon-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-mate-32bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-mate-32bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-mate-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-mate-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-cinnamon-nocodecs-32bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-cinnamon-nocodecs-32bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-cinnamon-nocodecs-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-cinnamon-nocodecs-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-mate-nocodecs-32bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-mate-nocodecs-32bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-mate-nocodecs-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-mate-nocodecs-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-cinnamon-oem-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-cinnamon-oem-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-mate-oem-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-mate-oem-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-kde-32bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-kde-32bit.iso: オープンまたは読み込みに失敗しました
sha256sum: linuxmint-17.3-kde-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-kde-64bit.iso: オープンまたは読み込みに失敗しました
linuxmint-17.3-xfce-32bit.iso: 完了
sha256sum: linuxmint-17.3-xfce-64bit.iso: そのようなファイルやディレクトリはありません
linuxmint-17.3-xfce-64bit.iso: オープンまたは読み込みに失敗しました
sha256sum: 警告: 一覧にある 13 個のファイルが読み込めませんでした
 

ちなみにダウンロードが途中で終了してしまったり何らかの理由で壊れてしまった場合などは以下のように失敗と言われます.

$ echo 'a'>> linuxmint-17.3-xfce-32bit.iso
$ sha256sum -c sha256sum.txt
  :
linuxmint-17.3-xfce-32bit.iso: 失敗
  :
sha256sum: 警告: 1 個の計算したチェックサムが一致しませんでした

このあたりのことは以下のページの説明が解りやすいと思います.

<追記>
フォーラムもやられてるらしいです……

</追記>