2009/03/03(Tue)特定のホストからだけsshの公開鍵認証ができない

2009/03/03 21:38 Software::Linux
ちょっと前からssh公開鍵認証が使えなくなって困っていた。
不思議なことに、公開鍵認証が通るホストもあるのだが、あるホストからは何度鍵を作り直したり、パーミッションを確認してみても通らない。
sshコマンドに-v等と付けて様子を見ていたが、これという原因が分からなくて悩んでいたのだけど、やっと解決。
脆弱性のあるlibsslを使って公開鍵を作成していたのが原因ということだった。

続きを読む

2008/12/09(Tue)小規模サーバーの静音化

2008/12/09 20:16 Software::Linux
出先から自宅のPCをちょちょっと操作したいときを考えて、自宅にWoL用のSSH/HTTPサーバー*1を走らせているが、HDDを換装してからモーター音が気になるようになった。
実は世代的にはかなり前のもう10年くらい前に作られたHDDだし。

で、気になるレベルであるが、30秒置きくらいに何か書いている感じ。
スピンダウン時間設定が全くの無駄じゃないか!カリカリうるさいし……。

というわけで、静音化にチャレンジしてみました。

続きを読む

2008/09/14(Sun)screenでデタッチできない 解決編

2008/09/14 21:21 Software::Linux
screenでデタッチできないというのを書いたが、解決法発見。
デタッチできないというよりも、むしろアタッチできないという方が正しい表現だったようだ。

これはscreenの問題ではなく、回線が切れたときにsshセッションが切れず、sshdプロセスが生きたままで、その応答待ちでscreenがattachedから変化しない模様。

以下、対処法。
$ ps x | grep pts | grep sshd
13819 ?        S      0:00 sshd: kero@pts/2
13985 ?        S      0:00 sshd: kero@pts/8
14595 pts/2    S+     0:00 grep sshd

grepが走っているpts/2が現在操作中のポートなので、pts/8を落とす。

$ kill -KILL 13985

$ screen -ls
There is a screen on:
        9120.pts-0.spinel       (Multi, detached)
1 Socket in /var/run/screen/S-kero.

$ screen -r
これで自動的にdetatchされ(autodetatchがonの場合)再アタッチ可能になる。


が、いちいちこんな事やるのが面倒なので、自分以外のsshセッションを片っ端から強制終了するスクリプトを書いてみた。
最近Perlの正規表現にハマってたりなので…。/bin/sh+sedかawk…と思いつつも、慣れてる方が書きやすい。
だいたい検証したけど、killのとこだけは検証してない…。たぶん大丈夫。ちゃんと動きました。
screenの内側から実行しないように注意。
#!/usr/bin/perl
use strict;

(my $tty = `echo -n \$SSH_TTY`) =~ s/\/dev\///;
my $dead = `ps x | grep pts | grep sshd | grep -v $tty | grep -v grep`;
foreach(split(/\n/, $dead)){
    $_ =~ s/^\s*(\d+).+$/$1/;
    print qq|Kill pid=$_...\n|;
    `kill -KILL $_`;
}

参考元:http://subtech.g.hatena.ne.jp/cho45/20070517/1179373075

2008/09/12(Fri)LoadAverageが50!?

2008/09/12 19:06 Software::Linux
この間、調子乗ってsftp3本張ってガンガン転送させながらPerlいじってたら、どんどんノロくなって、あれ?おかしいな、と思ったら、サーバーHDDのLEDが点灯
あ、こりゃまずいと思った時には、SSHの操作を受け付けるのが非常に困難に。

しばらく待ってたら、だんだん落ち着いて、topコマンドが入るようになったので、見てたけど、なにやら起動したPerlアプリのメモリが70%食ってるとかありえない表示になってたり。おかしいなぁ、そんなに酷い処理は書いてないんだけど…。

とりあえずkillallで該当Perlにkillをかけてから、sftpが収まるのを待ってようやくスムーズに。
後でサーバーの保守ログから作成したグラフを見て驚いたwこれはすげぇ…、Load Average 50いってたんだ。しかもswapの減り方が……。あぁかわいそう。
そんなに忙しいにもかかわらず頑張ってグラフ描いてくれたんだね、偉い偉い。*1

080904-load-hour.png

080904-swap-hour.png


まあ再起動することなく、おさまってくれてよかったです。
ちなみにおかしな挙動をしたPerlモジュールは変更せずにもう一回実行しても、↑のようなハングは起きませんでした。sftpのせい??

# 余談ですが、Linuxのsftpコマンドだけでレジューム転送ってどうやるんだろう?man調べたけどよく分からなかった。

*1 : まぁ白く抜けてる所は、さすがに処理してる暇がなかったんでしょう…。

OK キャンセル 確認 その他