2009/03/03(Tue)特定のホストからだけsshの公開鍵認証ができない
2009/03/03 21:38
不思議なことに、公開鍵認証が通るホストもあるのだが、あるホストからは何度鍵を作り直したり、パーミッションを確認してみても通らない。
sshコマンドに-v等と付けて様子を見ていたが、これという原因が分からなくて悩んでいたのだけど、やっと解決。
脆弱性のあるlibsslを使って公開鍵を作成していたのが原因ということだった。
2008/12/09(Tue)小規模サーバーの静音化
2008/09/14(Sun)screenでデタッチできない 解決編
2008/09/14 21:21
デタッチできないというよりも、むしろアタッチできないという方が正しい表現だったようだ。
これは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…と思いつつも、慣れてる方が書きやすい。
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)zshセグメ違反 解決
2008/09/12 19:19
さて、zshに乗り換えようかな…?
▼zsh4.3.4になってました。

2008/09/12(Fri)LoadAverageが50!?
2008/09/12 19:06
あ、こりゃまずいと思った時には、SSHの操作を受け付けるのが非常に困難に。
しばらく待ってたら、だんだん落ち着いて、topコマンドが入るようになったので、見てたけど、なにやら起動したPerlアプリのメモリが70%食ってるとかありえない表示になってたり。おかしいなぁ、そんなに酷い処理は書いてないんだけど…。
とりあえずkillallで該当Perlにkillをかけてから、sftpが収まるのを待ってようやくスムーズに。
後でサーバーの保守ログから作成したグラフを見て驚いたwこれはすげぇ…、Load Average 50いってたんだ。しかもswapの減り方が……。あぁかわいそう。
そんなに忙しいにもかかわらず頑張ってグラフ描いてくれたんだね、偉い偉い。*1


まあ再起動することなく、おさまってくれてよかったです。
ちなみにおかしな挙動をしたPerlモジュールは変更せずにもう一回実行しても、↑のようなハングは起きませんでした。sftpのせい??
# 余談ですが、Linuxのsftpコマンドだけでレジューム転送ってどうやるんだろう?man調べたけどよく分からなかった。