No Such Blog or Diary
VM が遅いと思ったら
- 2018-03-24 (Sat)
- ソフトウェア ( Linux/coLinux )
新しい VM 母艦に virt-install で新しい VM を作って OS インストールしてたら異常に遅い.何でだろうと思って virt-install の出力をよく見てみたら kvm が使えてないっぽい感じのエラーが:
ERROR Host does not support domain type kvm for virtualization type 'hvm' arch 'x86_64'
CPU 古くないし cat /proc/cpuinfo して vmx も出てるので CPU は問題ないはず,とか思いながら lsmod | grep kvm してみると……
kvm 548864 0 irqbypass 16384 1 kvm
うん,kvm_intel が欠けてる.試しに sudo modprobe kvm_intel してみるもエラーを食らう:
modprobe: ERROR: could not insert 'kvm_intel': Operation not supported
CPU が大丈夫だけどこんな文句を言われるならあとは BIOS で無効化されているというオチだけど,試しに sudo /usr/sbin/kvm-ok してみる:
INFO: /dev/kvm does not exist HINT: sudo modprobe kvm_intel INFO: Your CPU supports KVM extensions INFO: KVM (vmx) is disabled by your BIOS HINT: Enter your BIOS setup and enable Virtualization Technology (VT), and then hard poweroff/poweron your system KVM acceleration can NOT be used
ということで,VT が BIOS で無効化されてた.誰だそんな設定にしたのは…… たぶん誰もいじってないだろうからデフォルトなんだろうけど,何で VT 無効がデフォルトなんだか理解できん.
そんな状況で VM のインストールが終わるまでまったり止まってて時間無駄にした.残念.
- Comments: 0
- TrackBack (Close): -
LDAP で ssh の公開鍵管理
- 2017-06-26 (Mon)
- ソフトウェア ( Linux/coLinux )
ホームディレクトリを共有しないマシン達で ssh の公開鍵だけでも共有したいなと.何やら LDAP に置けるらしいのでやってみた.
とりあえず,LDAP サーバでスキーマ追加.sshPublicKey を持ち得る ldapPublicKey というオブジェクトクラスを定義する.
cat > openssh-lpk.ldif <<'EOF' dn: cn=openssh-lpk,cn=schema,cn=config objectClass: olcSchemaConfig cn: openssh-lpk olcAttributeTypes: ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' DESC 'MANDATORY: OpenSSH Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) olcObjectClasses: ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY DESC 'MANDATORY: OpenSSH LPK objectclass' MAY ( sshPublicKey $ uid ) ) EOF sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f openssh-lpk.ldif
次に,ssh サーバにスクリプトを置いて LDAP から鍵を取れるようにする(ドメインとかはテキトウな値を書いている).
cat > get_pubkey_LDAP <<'EOF' #!/bin/bash if test ${EUID:-${UID}} != 0; then echo "run as root" exit 0 fi if test "x$1" = "x" then echo "usage: $0 UID" exit fi uid=$1 dcs="dc=fuga,dc=hoge,dc=jp" ldapsearch -x -H ldapi:/// -b $dcs -LLL -D cn=admin,$dcs -w admin_pass_here "(& (objectClass=posixAccount) (uid=${uid}))" "sshPublicKey" | sed -e '1d;s/^ //' | sed -e 'H;$!d;g;s/\n//g' | sed -e 's/sshPublicKey: /\n/g' | sed -e '1d' EOF chmod 700 get_pubkey_LDAP sudo cp get_pubkey_LDAP /etc/ssh/get_pubkey_LDAP
そして /etc/ssh/sshd_config にこのスクリプトを使うように追記:
AuthorizedKeysCommand /etc/ssh/get_pubkey_LDAP AuthorizedKeysCommandUser root
もともと ~/.ssh/authorized_keys が有効なら,これで authorized_keys と LDAP と両方見に行ってくれる.
あとはユーザアカウント毎に鍵を LDAP に入れる.そのためにまずアカウントを ldapPublicKey クラスに入れる:
username="your_account_name" dcs="dc=fuga,dc=hoge,dc=jp" cat << << EOF | ldapadd -x -H ldapi:/// -D cn=admin,$dcs -w admin_pass_here dn: uid=$username,ou=people,$dcs changetype: modify add: objectClass objectClass: ldapPublicKey EOF
そしてユーザの鍵を追加する:
username="your_account_name" dcs="dc=fuga,dc=hoge,dc=jp" pubkey=$( cat $YOUR_PUBLIC_KEY ) cat << EOF | ldapadd -x -H ldapi:/// -D cn=admin,$dcs -w admin_pass_here dn: uid=$username,ou=people,$dcs changetype: modify add: sshPublicKey sshPublicKey: $pubkey EOF
なお,LDAP に鍵は複数個登録可能.あとは ssh サーバに置くスクリプトが複数の鍵に対応してればいい(と思う).
- Comments: 0
- TrackBack (Close): -
StrongSwan
- 2017-05-28 (Sun)
- ソフトウェア ( Linux/coLinux )
Ubuntu を 12.04 とかからアップデートしたら,VPN が通らなくなった.何が悪いんだろうかとログを見てみたらどうも OpenSwan が消えてなくなったようで.いつの間に?
ということで,設定そのままで sudo apt-get install strongswan と叫んで StrongSwan を入れたら普通に動いた.めでたしめでたし.
- Comments: 0
- TrackBack (Close): -
expect コマンド
- 2017-05-09 (Tue)
- ソフトウェア ( Linux/coLinux )
「こういう文字列がターミナルに来たら,文字出力とかをしろ」というのをやってくれるコマンド.条件と動作を簡単な言語で書ける.
パスワード認証しかできない ssh サーバに繋いで自動で何かをさせるとかいうのに有用.とりあえず裏でパスワード入れてくれて何もなかったかのように振る舞うだけのもの:
ssh_connect() { expect <(echo ' set timeout -1 proc password_input {} { global password send $password send "\n" expect "password:" password_input "Password:" password_input "Last login:" begin_interact } proc begin_interact {} { log_user 1 interact } log_user 0 eval spawn -noecho /usr/bin/ssh -t -o StrictHostKeyChecking=no user@ssh_host expect "Password:" password_input "password:" password_input "Last login:" begin_interact ') }
閑話休題.
サーバによって "password: " だったり "Password:" だったりでハマった.どうも一部のマシンに入れないなぁと思っていたら一文字目の大文字小文字が違ったとは.
- Comments: 0
- TrackBack (Close): -
Mailman で ML の設定をコマンドラインから
- 2017-04-08 (Sat)
- ソフトウェア ( Linux/coLinux )
何やら config_list とかいうコマンドがあるようで.config_list -o mlconf.py list_name とかやると各種設定を代入する python プログラム片が手に入る(-o の後のファイルに書き出される)ので,必要なところだけ代入値を書き換えてあげて config_list -i mlconf.py list_name とすれば設定できる.
書き換える必要のない代入は無くてもいいので,例えば複数のリストに対して footer を空にする設定を反映したければ,msg_footer = '' とだけ書いたファイルを用意して for でリスト名をぶん回せばいい.
まあ,年度ごとに ML を用意するときとかに“いつもの設定”をファイルに書いておけば ML の用意がスクリプト一発になるので便利.GUI でやるのは面倒すぎる.
- Comments: 0
- TrackBack (Close): -
aliases の :include:
- 2017-04-05 (Wed)
- ソフトウェア ( Linux/coLinux )
エイリアスをメーリングリスト的に使うときに転送先のアドレスを別のファイルに書いて置ける機能.今までカンマ区切りで一行に列挙してたよ……(大きなサイズの ML は Mailman だったし).
ということで,hoge-ml というメーリングリストのメンバーを /etc/mail-aliases/hoge-ml-members に書き並べておいて,/etc/aliases に次を書いて newaliases すればよいと.
hoge-ml: :include:/etc/mail-aliases/hoge-ml-members
これでファイル内に列挙されたメンバーに送られる.しかもこのメンバーを列挙したファイルの更新時には newaliases はいらないので楽という.
メンバーを列挙したファイルを使うと Mailman と違ってメンバーのメタ情報をコメントとしてかなり自由に書いておけるので,メタ情報を含めてのメンバー管理に便利かもしれない.Mailman でも"名前"として文字列を保存できるけど変なものを書くと事故りそうだし.
だがしかし,やっぱりメールヘッダに連番入れたくなるので Mailman と連携し始めるとかいうオチかな.
- Comments: 0
- TrackBack (Close): -