2009/05/22(Fri)2段ssh
2009/05/22 1:28
ここに対してsshセッションを外側張りたい場合、基本的には、インターネットからリーチャブルなゲートウェイの働きをするsshdを通して、その中でさらにssh、つまり2段sshをやるわけだが、sshコマンドを2回も打つのがめんどくさい。どうにか1コマンドで済まないものか。
2009/03/10(Tue)ffmpegでストリーミング映像(wmv2)をシーク可能にする
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