Ярлыки

четверг, 20 января 2011 г.

SSH - ошибка при проверке ключей

При подключении к другому компу по SSH появляется что-то типо такого :
# ssh 192.168.1.3
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
b5:b7:5f:6f:a5:d2:5c:3f:6c:c8:5a:4e:c7:29:2b:eb.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:2
RSA host key for 192.168.1.3 has changed and you have requested strict checking.
Host key verification failed.
Это значит, что ключи не совпадают, но не стоит отчаиваться и тупо удалять весь ~/.ssh/known_hosts

Исправляется сие очень просто :
ssh-keygen -R hostname_or_IP
Сменя ключей может происходить по нескольким причинам :
  • у клиента или сервера изменилась версия SSH (напр. с SSHv1 на SSHv2)
  • на сервере сгенерировались новые ключи
  • машина обрела другое имя или IP адрес.

вторник, 11 января 2011 г.

Обновление FreeBSD

Обновим сорцы. У меня супфайл такого содержания
jail# cat update-all
*default host=cvsupd.dc.beltelecom.by
*default base=/var/db
*default prefix=/usr
*default tag=RELENG_8_2
*default release=cvs delete use-rel-suffix compress
src-all
#ports-all
запускаем и идем готовить чай))
jail# csup update-all
Если csup закончил работу, то рекомендую под чаёк прочитать /usr/src/UPDATING.
Теперь очистим каталог obj для ускорения процесса сборки и избавления от лишнего геморроя :
jail# rm -Rf /usr/obj/*
и запустим сборку мира
jail# cd /usr/src
jail# make -j3 buildworld
где -j3 для сборки в 3 потока. Рекомендуется выбрать число от количества ядер процессора и добавить 1 (т.е. у меня двухядерник).
На всякий случай копирнем наше ядро... ну на всякий случай:
jail# cp -Rp /boot/kernel /boot/kernelOLD
из файла GENERIC создадим файл нашего нового ядра и отредактируем по своему вкусу:
jail# cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/KERNELIUS
jail# ee /usr/src/sys/i386/conf/KERNELIUS
И теперь можно приступить к сборке нового ядра
jail# make -j3 buildkernel KERNCONF=KERNELIUS
Если все прошло без ошибок, то
jail# make -j3 installkernel KERNCONF=KERNELIUS
иначе смотрим файлы make.conf, src.conf(если их редактировали) и файл конфигурации ядра и гуглим-гуглим-гуглим )) Лучше начинающим сразу не экспериментировать с оптимизацией.
Следующим шагом будет перезагрузка и переход в single mode
Вариант 1
jail# nextboot -o "-s" -k kernel
jail# shutdown -r now
Вариант 2
jail# shutdown -r now
--- и после перезагрузки в загрузочном меню выбрать пункт загрузки в однопользовательский режим
Если у Вас usb-клавиатура, то возможно понадобиться вот эта заметка.
При загрузке в однопользовательский режим оставляем шелл предлагаемый по-умолчанию (/bin/sh).
На всякий случай запустить
# fsck -y
а потом уже все смонтировать
# mount -a -t ufs
Теперь рекомендую проверить время и зону :
# date
и если покажет неправильно, то необходимо скорректировать настройку местного часового пояса
# adjkerntz -i
Пришло время запустить полезную утилиту для правильной синхронизации системных конфигурационных файлов :
# mergemaster -p
Описывать все ее особенности здесь я не буду... да и man mergemaster на это есть. Только скажу, что опция -p нужна для сравнения только тех файлов, которые понадобятся при запуске make installworld, (напр. /etc/make.conf) и кратко расскажу как сравнивать файлы, хотя там все должно быть понятно, но только на английском. В общем так.. если существует отличие при синхронизации конфига, то mergemaster сообщает об этом. Вверху экрана увидите имя старого файла, который не сходиться с новым, ниже - сами отличия.
  • - - этими знаками помечаются строки для удаления.
  • + - этими знаками помечаются строки для добавления.
За отличиями находиться меню управления синхронизацией текущего файла :
  • d - оставить полностью старый вариант
  • i - полностью согласиться с новым вариантом
  • m - построчное сравнение обеих варианта
  • v - пересмотреть отличия заново
В построчном режиме экран делится на две части, слева старый файла, а справа - новый. При нажатии на "Enter" выводятся возможные варианты последующих действий:
  • l - использовать вариант с левой стороны
  • r - использовать вариант с правой стороны
  • и еще несколько опций
После построчного сравнения придется сделать выбор :
  • i - оставить получившийся результат
  • r - повторить операцию построчного сравнения снова
  • v - просмотреть получившийся файл
И так файл за файлом. Придется набраться терпения )) Переходим в каталог с собранными файлами
# cd /usr/src
и устанавливаем мир
# make -j3 installworld
Следующим шагом будет очередной запуск mergemaster , но с другими флагами
# mergemaster -iU
  • i - автоматически установит конфигурационные файлы, которые отсутствуют в каталоге назначения
  • U - попытается автоматически обновить конфигурационные файлы, которые не были изменены пользователем.
Вот вроде и все. Загрузившись проверьте все-ли на месте, все-ли работает )) Ну и естественно полюбуйтесь на то, что Вы наделали :
jail# uname -a
В заключении можно было бы очистить немного места на диске от старых каталогов, файлов, библиотек(make delete-old; yes | - для автоматизации процесса) и результатов сборки :
jail# cd /usr/src
jail# yes | make delete-old
jail# cd /usr/obj
jail# chflags -R noschg * 
jail# rm -rf *

P.S.
после установки мира (make installworld) обдуманно делайте make delete-old или make delete-old-libs, т.к. это может удалить библиотеки, необходимые для запуска некоторых программ. Придется либо обновлять порт, либо собрать библиотеки нужной версии:
/usr/ports/misc/compat4x
/usr/ports/misc/compat5x
/usr/ports/misc/compat6x
/usr/ports/misc/compat7x

P.S.S.
если после сборки ядра система не грузится или не грузится и выдает ошибки, то не стоит отчаиваться. У нас же есть копии старого (и соответственно работоспособного) ядра. При загрузке системы необходимо выбрать в загрузочном меню пункт Escape to loader promt и в строке ввести команды:
# boot /boot/kernel.old/kernel
тем самым загрузив копию старого ядра, которую автоматически сделала система при сборке нового. Или загрузить копию, которую сделали мы :
# boot /boot/kernelOLD/kernel
После удачной загрузки со старым ядром Вы можете спокойно перепроверить Ваш конфигурационный файл, опираясь на сообщения из /var/log/messages, и пробовать еще раз собрать ядро.

Single mode и USB клавиатура

Как-то собрал мир и нужно было в single mode, но получается так, что загрузка доходит до ввода шела, а моя usb клава-то не работает на этом этапе. В меню загрузчика работает, а тут уже не работает. Так уж заведено, что при загрузке ядра фря думает, что должна быть подключена только ps/2 клава))
И поэтому в /boot/loader.conf нужно добавить:
hint.atkbd.0.flags="0x1"
Или при начальной загрузке системы выбрать в загрузочном меню пункт Escape to loader promt (на данный момент это пункт №6) и в строке ввести команды:
set hint.atkbd.0.flags="0x1"
boot -s
и после этого у меня usb-клава работала, как родная

Немного полезных команд

***Материал будет постоянно дополняться
Чтобы получить информацию о вашей модели процессора
sysctl hw.model
Чтобы получить информацию о общем объеме системной памяти
sysctl hw.realmem
Чтобы получить информацию об PCI-устройствах
pciconf -lv
Для получения информации об устройствах USB
usbconfig
Чтобы получить информацию о других подсоединённых устройствах
atacontrol list      # покажет все ATA устройства
camcontrol devlist -v
Получить информацию о количестве активных соединений tcp
netstat -an|grep tcp | wc -l
Получить информацию о количестве активных соединений udp
netstat -an|grep udp | wc -l
Получить статистику по жестким дискам и не только
systat -vmstat 1
Получить статистику по сетевым интерфейсам
systat -ifstat 1
Информация о процессах с отображением загруженности отдельных ядер процессора
top -SPH
Информация о размерах подкаталогов и общем размере каталога
du -shc /usr/*
Обновить базу пользователей
pwd_mkdb -p /etc/master.passwd

четверг, 6 января 2011 г.

ByFLY и make fetchindex

Поставил на старенький комп фрю в минимальной комплектации ))
Т.к. portsnap'ом отработать на FreeBSD'шном недозеркале byfly невозможно, то скачал дерево портов csup'ом
На моем стареньком компе долговато было сделать
# make index
но и нереально на том-же недозеркале быстрым способом с помощью make fetchindex
# cat /etc/make.conf | grep INDEX
MASTER_SITE_INDEX=ftp.byfly.by/www.FreeBSD.org/ports/
# cd /usr/ports
# make fetchindex 
/usr/ports/INDEX-8.bz2                        100% of  207  B  253  Bps 
bunzip2: (stdin) is not a bzip2 file. 
*** Error code 2 

Stop in /usr/ports.
Поэтому пришлось включить смекалку )) :
# fetch http://ftp.byfly.by/pub/FreeBSD/ports/i386/packages/INDEX.bz2
# bunzip2 INDEX.bz2
# cp INDEX INDEX-8
вот и все))
Только я до этого ставил bzip2

четверг, 16 декабря 2010 г.

Используем зеркало FreeBSD для установки из портов

Заставляем FreeBSD при установке портов сначала искать их на ближайшем/бесплатном/удобном (нужное подчеркнуть) сервере, а потом только уже на другом (официальном). Для этого в make.conf добавляем следующие строки:
MASTER_SITE_OVERRIDE?=  ${MASTER_SITE_BACKUP}
MASTER_SITE_BACKUP?= \
  ftp://ftp.byfly.by/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

среда, 15 декабря 2010 г.

Установка MySQL 5.5.7 на FreeBSD 8.1

Решил поставить MySQL в свой свеженький джайл. Обновил порты, затем
[erema15@erema15] /> ssh 192.168.1.101
Password:
%su
Password:
jail# portmaster /usr/ports/databases/mysql55-server
и процесс пошел.

После установки пробую запустить.
#/usr/local/share/mysql/mysql.server start
а оно мне
Starting MySQL.The server quit without updating PID file (/var/db/mysql/jail.erema15.by.pid).....
сразу пошел смотреть логи
jail#cd /var/db/mysql
jail# cat jail.erema15.by.err
101215 11:24:46 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql
101215 11:24:46 [Note] Plugin 'FEDERATED' is disabled.
/usr/local/libexec/mysqld: Table 'mysql.plugin' doesn't exist
101215 11:24:46 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
101215 11:24:46 InnoDB: Initializing buffer pool, size = 128.0M
101215 11:24:46 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
101215 11:24:46 InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
101215 11:24:46 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
101215 11:24:46 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
101215 11:24:46 InnoDB: 1.1.3 started; log sequence number 0
101215 11:24:46 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
101215 11:24:46 mysqld_safe mysqld from pid file /var/db/mysql/jail.erema15.by.pid ended

по рекомендациям в самом логе (и еще где-то видел) временно пишем в rc.conf
jail# ee /etc/rc.conf
mysql_enable="YES"
mysql_args="--skip-grant-tables --skip-networking"
и сейчас должно все запуститься в безопасном режиме
jail# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
Теперь делаем эти рекомендованное обновление таблиц, в консоли видим такую картину
jail# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
Running 'mysqlcheck with default connection arguments
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Running 'mysql_fix_privilege_tables'...
OK
теперь смело возвращаем rc.conf в прежднее состояние (я просто закоментил строку)
jail# ee /etc/rc.conf
mysql_enable="YES"
#mysql_args="--skip-grant-tables --skip-networking"
и передергиваем сервер
jail# /usr/local/etc/rc.d/mysql-server restart
Stopping mysql.
Waiting for PIDS: 95077.
Starting mysql.
все отлично, можно юзать.

P.S. Еще вот здесь есть инфа /usr/ports/UPDATING, но не знаю, про этот случай или нет...
...
20101110:
AFFECTS: users of databases/mysql55-server
AUTHOR: Alex Dupre

If you are upgrading from a previous MySQL release, the server will exit
during startup after finding that the proxies_priv table is missing.
To create the table, start the server with the --skip-grant-tables
option to cause it to skip the normal grant table checks, then run
mysql_upgrade. Then stop the server and restart it normally.
You can do this by temporarly setting the following line in rc.conf:

mysql_args="--skip-grant-tables --skip-networking"
...