You are looking at the HTML representation of the XML format.
HTML is good for debugging, but probably is not suitable for your application.
See complete documentation, or
API help for more information.
<?xml version="1.0"?>
<api>
<query-continue>
<allpages gapfrom="UUID" />
</query-continue>
<query>
<pages>
<page pageid="108" ns="0" title="SSH">
<revisions>
<rev xml:space="preserve">== Запуск SSH сервера ==
=== FreeBSD ===
Для запуска sshd на FreeBSD при каждом старте системы в '''/etc/rc.conf''' добавляем строку
sshd_enable="YES"
При следующей загрузке системы будут сгенерированы ключи хоста, если их нет.
=== Linux ===
На Linux прописать соответствующий симлинк в нужном runlevel или во всех. Должно получиться что то вроде такого:
$ ls /etc/rc*/*sshd
/etc/rc0.d/K26sshd /etc/rc2.d/S54sshd /etc/rc4.d/S54sshd /etc/rc6.d/K26sshd
/etc/rc1.d/K26sshd /etc/rc3.d/K26sshd /etc/rc5.d/K26sshd
Впрочем, развитые гуёвые конфигурялки пропишут что где надо, а в некоторых дистрибутивах ssh вобще включен по дефолту.
== Настройка ==
=== Файлы конфигурации ===
'''~/.rhosts''' - определяет адрес машины и имя пользователя, с которой данному пользователю открыт доступ.
'''~/.shosts''' - аналогичен .rhosts, но предназначен исключительно для ssh.
Формат: имя_хоста имя_юзера.
user1.test.ru user1
userstend.test.ru user1
'''/etc/hosts.equiv''' - также содержит пары имя машины/имя пользователя, но имеет эффект на всех пользователей.
'''/etc/shosts.equiv''' - аналог hosts.equiv, но применяется только ssh.
Формат: [+|-] имя_хоста имя_юзера.
+ user1.test.ru user1
- server.test.ru xakep
'''+''' - разрешение; '''-''' - запрет
'''/etc/ssh/ssh_known_hosts''' и '''~/.ssh/known_hosts''' - содержат список адресов и соответствующих им публичных ключей.
Формат: адрес (или адреса, разделённые запятой), публичный ключ для него одной(!) строкой и дополнительное поле комментариев (необязательно). Адрес клиента должен быть в полном формате (name.domain), иначе могут быть проблемы. Кроме этого, в адресе можно использовать шаблоны * и ?.
user1.test.ru {SOME_VERY_LONG_PUBLIC_KEY}
== Поддержка соединения ==
Обычно, через некоторое время, при бездействии пользователя (терминала) сервер закрывает сессию. Можно попробовать отредактировать в файле '''/etc/ssh/sshd_config''' параметры:
* '''ClientAliveCountMax''' - количество проверок, пока сервер не решит, что клиент "отвалился".
* '''ClientAliveInterval''' - интервал проверок (секунды).
Затем следует перезапустить SSH-сервер:
$ sudo service sshd restart
== Генерация пользовательских ключей ==
Команда '''ssh-keygen'''
<pre>
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vk/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/vk/.ssh/id_rsa.
Your public key has been saved in /home/vk/.ssh/id_rsa.pub.
The key fingerprint is:
fb:b3:48:d1:65:86:5c:12:d7:c3:ad:ea:a5:1e:0a:32 vk@vk-pc.local
</pre>
Иногда может потребоваться указать тип генерируемого ключа (по алгоритму RSA)
$ ssh-keygen -t rsa
== Передача ключа ==
Для размещения первого ключа достаточно выполнить команду '''scp''' - безопасное копирование.
<pre>
$ scp ~/.ssh/id_rsa.pub username@server.name:~/.ssh/authorized_keys
Password:
id_rsa.pub 100% 396 0.4KB/s 00:00
</pre>
Если имя пользователя совпадает с текущим, то его можно не указывать.
Права на файл '''authorized_keys''' должны быть '''600''', на папку '''.ssh''' должны быть '''700''' - для ограничения доступа посторонних.
Директория '''~/.ssh''' на удаленном сервере должна быть создана заранее, иначе будет сообщение об ошибке. Именно там должен быть размещен файл '''authorized_keys''' с ключами. Остальные ключи необходимо дописать в этот же файл.
$ ssh user@host "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
В некотроых системах существует скрипт '''ssh-copy-id'''. Кроме копирования он так же устанавливает правильные права на файл.
$ ssh-copy-id -i .ssh/id_rsa.pub user@server.name
== Примеры использования ==
=== Монтирование удалённой директории по SSH (sshfs) ===
Для начала необходимо установить поддержку '''sshfs'''
$ sudo apt-get install sshfs
И загрузить модуль '''fuse'''
$ sudo modprobe fuse
Теперь можно попытаться смонтировать
$ sshfs remoteuser@server.domain:/path/to/folder/on/remote/server /path/to/local/mount/point
Если будет ругань на нехватку прав на устройство /dev/fuse, нужно добавить юзера в группу fuse
=== Выполнение команд на удалённой машине ===
Протокол SSH предусматривает возможность выполнить команду на удалённой машине, получив результат на машине клиента (терминале). Пример
$ ssh user@server 'ls -l /path/to/dir'
Однако, в некоторый случаях программе (скрипту) на удалённой машине требуется выполнить вывод в консоль, а она как бы не существует. Например, при использовании '''sudo''' в вызываемом скрипте. В таком случае возможно сообщение об ошибке вроде такого: '''sudo: no tty present and no askpass program specified'''. Ключик '''-t''' (принудительное использование терминала) скорей всего решит проблему:
$ ssh user@server 'ls -l ~/path/to/my_script param1 param2'
=== Туннель ===
Здесь локальный порт 12345 будет проброшен на порт 3306 на remote.host. Таким образом, подключаясь на 127.0.0.1:12345 можно работать с удаленной БД "локально".
$ ssh -L 12345:localhost:3306 user@remote.host
В следующем примере локальный порт 12345 (допустим, с домашнего компьютера) будет проброшен на порт 22 internalhost.local (компьютера из рабочей локальной сети) через шлюз remote.host той самой сети. Таким образом, подключиться к удаленной машине можно 'ssh -p 12345 localhost'.
$ ssh -L 12345:internalhost.local:22 user@remote.host
=== Проброс X через туннель ===
Подготовка туннеля с внутреннего хоста из удаленной локальной сети через шлюз на локальную машину:
$ ssh -fNL 12345:internal.local:22 user@remote.host
Запуск приложения VirtualBox на удаленной машине с выводом графики на локальную:
$ ssh -YvCp 12345 username@localhost VirtualBox
== Ссылки ==
*http://www.opennet.ru/base/sec/ssh_intro.txt.html
*http://www.opennet.ru/base/sec/ssh_conf.txt.html
*http://www.opennet.ru/base/sec/ssh_pubkey_auth.txt.html
*http://www.openbsd.ru/docs/steps/ssh-pubkey.html
[[Категория:*nix]]</rev>
</revisions>
</page>
<page pageid="76" ns="0" title="UTF8 - кривые преобразования">
<revisions>
<rev xml:space="preserve">== Преамбула ==
Как то после падения дамп базы MediaWiki был перенесен на другой сервер, однако, в базе получилась каша. Удалось нагуглить вот [http://elfimov.com/everything/entry/3829 эту статью], где автор описал свою аналогичную проблему и способ решения. В общем то, базу удалось восстановить аналогичным образом. Однако, меня совсем не устроило, что в базу с кодировкой utf8 данные пишутся перебитыми в cp1251. Пришлось копнуть конфиг '''LocalSettings.php'''. Там мое внимание привлек такой параметр:
<source lang="php">
# Experimental charset support for MySQL 4.1/5.0.
$wgDBmysql5 = false;
</source>
Покопавшись в описании конфига MediaWiki, сделал для себя открытие, что этот параметр устанавливает кодировку соединения с базой utf8. И действительно, после изменения значения в '''true''' в базу стал писаться нормальный текст. Ниче се, очень интуитивно понятное имя параметра и его описание ))) Ладно, оставим это на совести авторов... Так что, по хорошему, должно быть вот так:
<source lang="php">
# Experimental charset support for MySQL 4.1/5.0.
$wgDBmysql5 = true;
</source>
== Некоторые соответствия ==
Ежели utf8 записали в базу как cp1251 или latin1, получается нечитаемый текст примерно с таким соответствием символов:
{| border="1" cellspacing="0" cellpadding="3"
!cp1251!!latin1|| ||width="50px"| !!cp1251!!latin1||
|-
|Р°||а||а|| || ||Ð||А
|-
| ||б||б|| || ||Б||Б
|-
|РІ||в||в|| ||Р’||Ð’||В
|-
|Рі||г||г|| || ||Г||Г
|-
|Рґ||д||д|| || ||Д||Д
|-
|Рµ||е||е|| || ||Е||Е
|-
| ||Ñ‘||ё|| || ||Ð||Ё
|-
| ||ж||ж|| || ||Ж||Ж
|-
| ||з||з|| ||Р—||З||З
|-
|Рё||и||и|| || ||И||И
|-
| ||й||й|| || ||Й||Й
|-
| ||к||к|| ||Рљ||К||К
|-
|Р»||л||л|| || ||Л||Л
|-
|Рј||м||м|| || ||Ðœ||М
|-
|РЅ||н||н|| || ||Ð||Н
|-
| ||о||о|| || ||О||О
|-
| ||п||п|| || ||П||П
|-
|СЂ||Ñ€||р|| || ||Ð ||Р
|-
|СЃ||Ñ||с|| || ||С||С
|-
|С‚||Ñ‚||т|| || ||Т||Т
|-
| ||у||у|| || ||У||У
|-
| ||Ñ„||ф|| || ||Ф||Ф
|-
| ||Ñ…||х|| || ||Ð¥||Х
|-
|С†||ц||ц|| || ||Ц||Ц
|-
| ||ч||ч|| || ||Ч||Ч
|-
|С€||ш||ш|| || ||Ш||Ш
|-
|С‰||щ||щ|| || ||Щ||Щ
|-
|СЊ||ÑŒ||ь|| || ||Ь||Ь
|-
|С‹||Ñ‹||ы|| || ||Ы||Ы
|-
|РЄ||Ъ||Ъ|| ||РЄ||Ъ||Ъ
|-
|СЌ||Ñ||э|| ||Р ||Ð ||Э
|-
|СЋ||ÑŽ||ю|| ||Р®||Ю||Ю
|-
|СЏ||Ñ||я|| ||РЇ||Я||Я
|}
[[Категория:Кодировки]]</rev>
</revisions>
</page>
</pages>
</query>
</api>