вторник, 18 сентября 2012 г.

sshd не принимает ключ

Надо было нагиосу сделать вход по ключу на очередной ноде. Сделал - не пускает. Несколько раз сверил права на .ssh, на authorized_keys, на хомяки - всё правильно. Но не принимает ключ, давай пароль и всё тут. Самое забавное - таких серверов полно, все настроены одинакого - ходит нагиос по ключику. Попробовал себе ключ сделать - пускает.
-vvv ничего интересного кроме очевидного не показал:
 
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /var/spool/nagios/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

Врубил DEBUG3 в конфиге демона:

debug3: mm_answer_keyallowed entering
debug3: mm_answer_keyallowed: key_from_blob: 0xaaaabbbbcc60
debug1: temporarily_use_uid: 333/333 (e=0/0)
debug1: trying public key file /home/nagios/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 333/333 (e=0/0)
debug1: trying public key file /home/nagios/.ssh/authorized_keys2
debug1: restore_uid: 0/0
Failed publickey for nagios from 178.111.22.33 port 58970 ssh2
debug3: mm_answer_keyallowed: key 0xaaaabbbbcc60 is not allowed
И это через гугл навело на selinux )) Вот и все дела. Отключил и заработало.

пятница, 7 сентября 2012 г.

ssh: укорачиваем команду

Уже как-то писал про то, как удалось сократить длину некот. git команд за счёт настройки хостов в ssh_config. Решил на ноуте сделать так же для наших хостов, чтобы не набивать "$ ssh username@host.domain.org".
Так, как писать секции самому неохота, сделал скриптик sshgen.sh, вызываемый в цикле:

#!/bin/bash
if [ $# -eq 0 ]; then
        echo "Usage: sshgen.sh host domain user"
else
        echo "Host $1"
        echo "        User $3"
        echo "        HostName $1.$2"
fi
Работает так:
$ for a in {1..7};do for b in vps$a;do ./sshgen.sh $b domain.com username; done; done
Host vps1
        User username
        HostName vps1.domain.com
Host vps2
        User username
        HostName vps2.domain.com
Host vps3
        User username
        HostName vps3.domain.com
Host vps4
        User username
        HostName vps4.domain.com
Host vps5
        User username
        HostName vps5.domain.com
Host vps6
        User username
        HostName vps6.domain.com
Host vps7
        User username
        HostName vps7.domain.com
 Полученный вывод суём в ssh_config и вместо "$ ssh username@host.domain.org" пишем "$ ssh host"

среда, 5 сентября 2012 г.

ISP: account disabled by server administrator

Человек жалуется - просрочил оплату, был залочен. Оплатил, но "сайт досихпор неработает".

Смотрю, действительно залочен. Нашёл в основном конфиге апача секцию с его хомяком:

<Directory /var/www/username/data>
        AllowOverride none
        Deny from all
        ErrorDocument 403 /disabled/index.html
</Directory>

Дёрнул суспенд/унсуспенд - 0.
Руками потёр начинку секции. Вот теперь интересно - заменится ли ручная правка? )) Посмотрим..

Самый прикол, что лочился и разлочивался акк через испэшный http api. На их форуме нашёл пост про аналогичную ситуацию, но там акки оставались лоченными из-за порчи конфига апача лишними закрывающими тегами секций. Официальная позиция на этот счёт - да, баг имеет место и не только с конфигом апача. Но баг редкий и трудновоспроизводимый, поэтому пока не отловили.
Если тут есть связь - становится немножко грустно.

пятница, 31 августа 2012 г.

Селестина, день 4

Попробовал сделать молнии на клинке, прямо сходу не так пошло. Надо переделывать. И цветы с волосами как-то не так выглядят, надо придумать что-то.


четверг, 30 августа 2012 г.

Селестина, день 3

Ещё немного осталось:


среда, 29 августа 2012 г.

PHP и ./configure --prefix

Собираю сухосин. Не могу префикс задать, вместо моего /usr/local/php52 встаёт дефолтный.
Нашёл "фичу", епт: можно хоть обделаться, передавая конфигуратору опции, которые, между прочим, в хелпе конфигуратора перечислены, но он их затрёт данными, получаемыми от php-config. Странное поведение, по идее, должно быть наоборот. В общем, вместо префиксов просто задал
./configure --with-php-config=/usr/local/php52/bin/php-config

вторник, 28 августа 2012 г.

Святая Селестина

Попалась тут на ебее Святая Селестина из Адепта Сороритас, в субботу приехала. Бросил облитераторов, взялся за неё.
Вот результат на второй вечер:


Сегодня-завтра может доделаю.

Сборка php 5.4 для cpanel с php 5.3

Сказали, что надо для панелей запилить пых 5.4, сохранив основным 5.3.
Собрал c блекджеком, проститутками и параметрами:
./configure --prefix=/usr/local/php54 --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd-native-ttf --enable-mbstring --enable-pdo --enable-soap --enable-sockets --enable-wddx --enable-zip --with-bz2 --with-curl=/opt/curlssl/ --with-freetype-dir=/usr --with-gd --with-gettext --with-imap=/opt/php_with_imap_client/ --with-imap-ssl=/usr --with-jpeg-dir=/usr --with-kerberos --with-libdir=lib64 --with-libexpat-dir=/usr --with-libxml-dir=/opt/xml2 --with-libxml-dir=/opt/xml2/ --with-mcrypt=/opt/libmcrypt/ --with-mysql=/usr --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=/usr/bin/mysql_config --with-pcre-regex=/opt/pcre --with-pdo-mysql=shared --with-pdo-sqlite=shared --with-pic --with-png-dir=/usr --with-tidy --with-xmlrpc --with-xpm-dir=/usr --with-xsl=/opt/xslt/ --with-zlib --with-zlib-dir=/usr --with-zend-vm --with-pgsql --with-pdo-mysql --with-pdo-pgsql
Пришлось по мелочи либ доставить, конфигурялка подсказала. Взял стоковый php.ini, поправил лимиты на память, аплоад, пост и еррор лог задал.
Дальше самое интересное: в suphp указываем путь до нового пыха и в конфе апача добавляем хандлер:

/opt/suphp/etc/suphp.conf:
application/x-httpd-php54="php:/usr/local/php54/bin/php-cgi"

/usr/local/apache/conf/includes/pre_virtualhost_2.conf:
suPHP_AddHandler application/x-httpd-php54

Теперь клиенту достаточно добавить в .htaccess:
AddType application/x-httpd-php54 .php5 .php4 .php .php3 .php2 .phtml
Самое главное - не забыть закомментить всё при запуске easyapache ))

среда, 22 августа 2012 г.

Книжка про перл

$ mkdir beginning_perl
$ cd  beginning_perl
$ lynx --source http://www.perl.org/books/beginning-perl/| grep pdf| awk -F"\"" '{print $4}' | xargs wget
$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Beginning_Perl.pdf -dBATCH 3145_Intro.pdf 3145_Chap01.pdf 3145_Chap02.pdf 3145_Chap03.pdf 3145_Chap04.pdf 3145_Chap05.pdf 3145_Chap06.pdf 3145_Chap07.pdf 3145_Chap08.pdf 3145_Chap09.pdf 3145_Chap10.pdf 3145_Chap11.pdf 3145_Chap12.pdf 3145_Chap13.pdf 3145_Chap14.pdf 3145_AppA.pdf 3145_AppB.pdf 3145_AppC.pdf 3145_AppD.pdf 3145_AppE.pdf 3145_AppF.pdf 3145_AppG.pdf 3145_AppH.pdf 3145_AppJ.pdf 3145_Index.pdf

Cpanel wildcard domains and nginx

На днях появилась такая проблемка:
1. Клиент в сипанели цепляет вайдкардный домен вида *.domain.com.
2. Панель добавляет алиас www.*.domain.com.
3. При генерации конфига nginx в директиву server_name попадает значение  "*.domain.com www.*.domain.com"/
4. Nginx проверяет новый конфиг и говорит, что он invalid, т.к. "*" допускается только в начале или конце сервернейма.

Сипанель нельзя заставить генерить имена с "*" в середине, поэтому пришлось выгребать такие имена из нагенерённого конфига.

Сделал такую штуку:
#!/usr/bin/perl
my $filename=$ARGV[0];
open(IN, "<", $filename) or die "open error\n";

while (<IN>) {
        my($line) = $_;
        chomp($line);
        if (m/server_name/) {
                $line =~ s/\S+\*\S+//g;
        }
        print  "$line\n";
}
Дергаю её после генерации конфига, в патч для скрипта-генератора:
--- build-conf.sh       2010-03-04 14:26:39.000000000 +0300
+++ build-conf.sh_new   2012-08-22 11:58:27.000000000 +0400
@@ -16,13 +16,16 @@

 cd $ROOT

-if [ ! -f $NGINX/vhosts.conf.new ]; then
-       touch $NGINX/vhosts.conf.new
-       chmod 600 $NGINX/vhosts.conf.new
+if [ ! -f $NGINX/vhosts.conf.raw ]; then
+        touch $NGINX/vhosts.conf.raw
+        chmod 600 $NGINX/vhosts.conf.raw
 fi

 # build nginx conf using default template in $TMPL
-$ROOT/ngx_conf_gen.pl -c /usr/local/apache/conf/httpd.conf > $NGINX/vhosts.conf.new || exit 4
+$ROOT/ngx_conf_gen.pl -c /usr/local/apache/conf/httpd.conf > $NGINX/vhosts.conf.raw || exit 4
+
+# remove invalid wildcarded server_name (example: www.*.server.com)
+$ROOT/rm_badwildcard.pl $NGINX/vhosts.conf.raw > $NGINX/vhosts.conf.new

 new=`$MD5 $NGINX/vhosts.conf.new | cut -f1 -d' '`
 cur=`$MD5 $NGINX/vhosts.conf | cut -f1 -d' '`