ed25519で公開鍵認証

sshの鍵をrsaをやめてed25519にしてみたことについて.
オープンサーバにSSHで入れるようにして,色々な国からのハッキングっぽいアクセスログが残っている現状を鑑みれば,とりあえず強化しておくに越したことはないよね,っつー話.
あと,RSAの鍵長を伸ばして行くと,ログインにちょっと時間がかかる気がしており,ed25519はrsaより短い鍵長で同程度の強度を誇るらしいので,ちょっとは公開鍵認証の処理が早くならんかしらと期待しているのもある.

実行速度とかは,この辺を参照→自堕落な技術者の日記 : RSAとECDSA、署名生成と署名検証どっちが速い? - livedoor Blog(ブログ)

鍵の生成

とりあえずデフォルトで.

$ ssh-keygen -t ed25519 -C 'comment'

今んところできないのか,原理的なものによりできないのか,とりあえずビット長の指定はきかない.
できあがる鍵は ~/.ssh/id_ed25519[.pub]

sudo した時,zsh がエラーを出すようになった

エラーはこんな感じ.

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

compinitが食べてるpathを片っ端からchmod g-wしてみたけど,消えない.
zshenvでcompinit -uしてるしなぁと思ったものの,zshが起動する時に読み込む設定ファイルを片っ端から調べてみたら,エラーの回数だけ -u が外れているものを見付けた.
私の場合,

  • ~/.zsh/.zshrc
  • /etc/zsh/zshrc

昔は出てなかったので,何かのタイミングに切り戻されたりアップデートされたりしたのやも知れん.
ともかく解決して良かった.

virtualbox on ubuntu で USB 機器が認識できなくなった

少し前まで,ホストマシンにUSB接続しているScansnapのフタを開けば,ubuntu の上の virtualbox で仮想化している windows から自動的に見えるよう設定していたのであるが,ある日突然,認識しなくなっていた.

切り分け

フィルタは有効か?
設定は残っている.試しに消してみて,追加し直そうとしてみたところ,追加すべきデバイスが見付からない様子であった.
VboxからUSBデバイスは見えているか?
$ VBoxManage list usbhost
Host USB Devices:

<none>

のように,認識していない.

デバイスはホストOSから認識しているか?
$ lsusb
(略)
Bus 001 Device 004: ID 04c5:1096 Fujitsu, Ltd fi-5110EOX
(略)

のように,認識している.

vboxmanageグループにローカルユーザは所属しているか?
$ grep vbox /etc/group
$

!?
そもそもvboxusersグループがないやーん!

対処

単にグループ作るだけでうまくワークするか分からんかったので,vboxの再インストール.
設定消えたりすると面倒なので,remove/installで.

$ sudo apt-get remove virtualbox-5.0
$ sudo apt-get install virtualbox-5.0
$ grep vbox /etc/group
vboxusers:x:125:
$ sudo gpasswd -a USER vboxusers

動作確認→まだ認識しない!

$ groups
USER adm cdrom ... # vboxusersがない!

多分,起動し直して,/etc/groupを読み直してもらえばいいのでは?

$ sudo reboot

再起動後…!! 復活!!

uim-skk で カンマやピリオドを句読点の代わりに使うなど

これではダメだった→UIM-skk の句読点をカンマ・ピリオドに. - 落書き、時々落学

ので,これで(anthyとなっているけど,skkでもいける)→uim-anthy で句読点をカンマドットに変える - Qiita

ちなみに,「z+」で全角スペースを入力する場合,
input:「z 」(z+
next:(何も入力しない)
output:「 」(全角スペース)
とすると良い.

input:z
next:「 」(半角スペース)
output:「 」(全角スペース)
とすると,全角スペースの後ろに半角スペースが入る.

rxvtでuimを使って漢字変換をしようとすると真っ白になる現象の対処

環境
ディストリ:ubuntu 14.04
ウィンドウマネージャ:xmonad
ターミナル:rxvt-unicode

現象
uim-skkを使用してurxvt上で日本語入力をする時、かな入力は問題ないが変換モードで入力しようとすると入力した文字列が背景色・文字色とも白となり文字を視認できない
入力を確定すると、ターミナルのフォントで日本語文字が入力され、視認できる

対処
以下の設定があれば、消す。
または、24とする。
何故かは不明。

- urxvt.depth: 32
+ urxvt.depth: 24

xmonad環境でxmobarの設定をホスト名で振り分ける

gitとかで設定ファイルを管理して,新しいマシンではgit clone hogehogeし,ホームディレクトリにシンボリックリンクを張るだけでいつもの環境になって欲しい.
この時,shの設定は簡単に振り分けられるが,馴染のないhaskellで書かされるxmonadの設定とxmobarの設定をどう振り分けるのか困るのであった.

haskellを普段使いしている人には何のことない話なんだけど…

import System.Posix.Unistd

main = do
    host <- fmap nodeName getSystemID -- ホスト名を host にセット
    -- どれが良いか分からんので,上手くいかない時は以下も試してみる
    -- or host <- nodeName `fmap` getSystemID
    -- or host <- nodeName <$> getSystemID  -- 要 import Control.Applicative
    myStatusBar <- spawnPipe $ "xmobar ~/.xmonad/.xmobarrc_" ++ host -- 文字列の連結

ibusのステータス(現在使っているIME)をxmobarに表示する

ibus のエンジンをコマンドラインで引けるので,簡単に出せるのだった

Config  { commands = [ -- (略)
                     , Run Com   "/usr/bin/ibus" ["engine"] "MyIME" 10
                     -- (略)
                     ]
          , template " XXXXX  %MyIME% XXXXX"
        }

私の環境だと,skkとか出る.
時々,IMEがバグってenとかに陥っている時とかに,ここで確認できることを期待して表示させている.

今回,ibusの状態を可視化することによって,skkが落ちているのではなく,C-jを受け付けない状況にい陥ってるのだと判明.
ibus-daemonの再起動 (ibus-daemon –drx) で直ることも判明.

LinkStation (LS-QVL) が時々ハングるので,中身を調べてみた

proxy配下に置いたLinkStationが,週に1回くらいハングってくれるので,ちょっといじってみたよ.
結果はどうなることやら.

sshで入れるようにする

LinkStation に ssh で root ログインできるようにする - maruko2 Note.
を参照した.
一般ユーザでログインできるようにしようとしたら,色々と抑止策が施されていて,リブートするごとに設定が巻き戻ったり(正確にはsshd再起動で巻き戻る)するので,rootでパスワードログインすることで良いことにした.
気になる人は公開鍵認証にしてはどうか.試してないけど.
あと,コマンドライン履歴にパスワードが残る運用は私の中ではあり得ないので,ファイルに書き出したのをコマンド内で呼んでいる.
あと,gつけるのは怖いので,私はsedにgはあんまつけない.ちゃんと動きそうか,catとかで確認すること.

  1. パスワード設定
    $ IP="192.168.1.X"
    $ Admin_PW=$(cat admin_passwd)
    $ ROOT_PW=$(cat root_passwd)
    $ java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "(echo $ROOT_PW ; echo $ROOT_PW) | passwd"
    $ java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "cat /etc/sshd_config"
    $ java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "sed -i 's/UsePAM yes/UsePAM no/' /etc/sshd_config"
    $ java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/sshd_config"
    $ java -jar acp_commander.jar -t $IP -ip $IP -pw $Admin_PW -c "/etc/init.d/sshd.sh restart"
  2. ログイン
    $ ssh root@$IP

ログを探す1

どうも,/var/log/syslogがないなーと思ったら,/var/log/messagesに色々と書いてあった.
前回暴走直前の挙動を調べると,majishanzuかmDNSResponder辺りが怪しい.

  1. とりあえず,majishanzu を/etcで探しても見付からないので,頑張って探す.
    # which majishanzu
    /usr/local/sbin/majishanzu
    # grep majishanzu /usr/local/sbin/majishanzu
    /etc/melco/majishanzu
    majishanzu_state
    /var/lock/majishanzu_update
    /etc/melco/majishanzu/
    /tmp/majishanzu_dl
    %s/majishanzu_info
    /etc/melco/majishanzu/majishanzu_state
    majishanzu success
    majishanzu
    majishanzu start
    

    しかし,/etc/melco/majishanzu には情報はないのであった.

  2. 続いて,ログの直前にtwonkyのログが出ていたので,twonkyから呼び出されているのでは?と推測.
    検索したら出てきた.
    Linkstation Duo LS-WXL - how to access media server confguration page (port 9050)
    /usr/local/twonky-alt/ へ

    # cd /usr/local/twonky-alt/
    # grep majishanzu *
    twonky.sh:MS_DL_LOCK_FILE=/var/lock/majishanzu_update
    twonky.sh:MAJISHANZU_DIR=/etc/melco/majishanzu
    (略)
    

    grepをかけると,twonky.shで呼び出されているので,中を読む.
    /usr/local/sbin/majishanzu のある時,do_majishanzuが呼ばれているようなので,元ファイルをリネームして退避すれば,もう二度と呼ばれないはず.

    # mv /usr/local/sbin/majishanzu /usr/local/sbin/majishanzu.bak
  3. ちなみに,絶対どこかから呼び出されて動作しているはず,と思ってcrontab -lで出てくるスクリプトが置いてある/etc/cron/cron,d内をgrepしてみると,ms_checkversion.shの中にtwonky.shが書かれている.
    こいつは30分に1回呼ばれていた.

ログを探す2

mDNSResponderも止めておこうと調べてみると,bonjour関係のプロセスだった.
そういえばiTunesを使ってた時にwindowsでも見たことある.

面倒臭いので結論から言うと,こいつはcronではなく/etc/init.d/bonjour.shから呼ばれていて,/etc/melco/infoの中を見るとbonjour=onの設定が書かれており,bonjour.shの中でこいつがonなら…という行がstart()にあるので,/etc/melco/infoを書き換えてbonjour=offとしてみた.

chainer, cuDNN on ubuntu 14.04

cudaは,CUDA 7.5 Downloads | NVIDIA Developerあたりから落として入れる.
私はネットワークインストーラを選択して入れた.入れ方はダウンロードリンクのすぐ下に書かれた通りにやればOK.
なんか,nvidiaドライバもこれで入る.入ったかどうかは

$ lsmod | grep nv
nvidia_uvm             77824  0 
nvidia               8544256  1 nvidia_uvm
drm                   344064  5 i915,drm_kms_helper,nvidia

みたいな感じで入ってればいいんじゃないかしら.
記憶にないけど,なんかnouveauは入ってなかった.
私のマシンはオンボードのIntelグラフィックコントローラとGeForceの両方を搭載しているので,多分最初にubuntu入れる時,グラボを使わなかったんじゃなかろーかと.よく知らんけど.

cuDNNをNVIDIA cuDNN | NVIDIA Developerから落としてきて入れる.
登録は必須っぽいから,仕方なくやる.

cudnnのtar ballを解凍したら,cudaというディレクトリができるので,cudaのインストールパスにコピる.
多分,デフォなら /usr/local/cuda あたりにあるはず.

chainerを入れ直す.
chainerはキャッシュを使うとコンパイルし直してくれないっぽいので,キャッシュを無効化して入れる.

$ pip install chainer --user --no-cache-dir

ローカルに入れない場合は,userオプションを抜いてsu権限でやる.

うまくいけば,pythonから呼び出した時にエラーが出なくなる.

>>> from chainer import cuda
>>> cuda.zeros(1)
array([ 0.], dtype=float32)

Adobe Readerの「最近使用した場所」を保存させない

編集>環境設定>文書 にある 「最近使用した文書にリストする数」を0にすると,開いたファイルの履歴は残らないものの,そのファイルまでのパスは保存される.
パスはレジストリの,
[HKCU\Software\Adobe\Acrobat Reader\11.0\AVGeneral\cRecentFolders]
の配下に「c1」「c2」…「cX」という名前のキーとして作成される.
そこで,cXというキーを全て削除すると,履歴は消える.

履歴を残さないようにするには,以下の手順で,キーに書き込みできなくしてやれば良い.

  1. cRecentFoldersを右クリックして出てくるメニューから,アクセス許可を選択.
  2. 詳細設定,のボタンをクリック
  3. アクセス許可のタブの中の「継承の無効化」ボタンをクリックし,削除を選択
  4. 開いている2つのダイアログ両方のOKを押して設定保存して終了