SSH (англ. Secure SHell — «безопасная оболочка»[1]) — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы имеются для большинства сетевых операционных систем.
SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры)[2]. Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System.
Большинство хостинг-провайдеров за определенную плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удаленного запуска программ (в том числе графических приложений).
я думаю многим эта тема будет интересна
SSH - доступ. Crontab. Перенос
Закачивать сайт можно по протоколу FTP, соединяясь с сервером, где расположен ваш сайт, с помощью FTP-клиента. Как это сделать, мы подробно рассмотрели в одной из статей нашего справочника.
Но бывают ситуации, когда нужно отладить работу скрипта непосредственно на сервере хостинг-провайдера. Или сделать автоматический запуск определенного файла в определенное время. Или совершить какие-то манипуляции с базами данных MySQL.
Для всех этих и многих других действий пользователей хостинг-провайдеры предоставляют доступ по защищенному протоколу telnet (а не по ftp), так называемый shell-доступ (ssh-доступ).
Работа с shell - это работа с командной строкой Unix. Если кто не знает, поясним, что Unix - это операционная система, альтернативная Windows. А так как это другая операционная система, то в ней существуют другие законы, команды и т.п.
Что нужно для работы с ssh? Существует множество программ для работы из Windows. Вы можете скачать Putty или SecureCRT.
Рассмотрим подключение на примере работы с программой Putty.
Все очень просто. Запускаете файл putty.exe
Откроется окно программы.
В поле "Host name" прописываете доменное имя вашего сайта. К примеру, site.com
Выбираете протокол доступа - Protocol SSH.
Нажимаете "Open". Все, сессия началась. Программа запросит ввести вас логин, вводите тот же, что у вас для доступа по FTP. Затем вводите пароль.
Внимание! Первое, что необходимо запомнить при работе с командной строкой unix - cистема различает регистр букв. То есть файлы типа Pupkin.pl и pupkin.pl и pupkin.Pl -- это совершенно разные файлы. Также и пароли wert и WerT - разные пароли!
Итак, вы подключились!
Теперь расмотрим несколько основных команд, которые могут понадобиться при работе с сайтом.
pwd - получить имя текущей папки, где вы находитесь.
cd - изменить текущую директорию
Например, Вы находитесь в директории /home, а Вам нужно попасть в /usr/sbin. Для этого Вам нужно просто набрать команду:
cd /usr/sbin.
Вот что при этом Вы увидите на экране:
vvs01% cd /usr/sbin
vvs01%
ls - вывести информацию о файлах или папках
При этом список может быть довольно большой.
Поэтому существуют ключи для этой команды, вот некоторые из них:
-a - вывести все файлы (даже те, имена которых начинаются с точки);
-x - вывод в 4 колонки;
-t - имена файлов сортируются не по алфавиту, а по времени последнего изменения (сначала идут самые свежие, только что измененные файлы);
-R - рекурсивно пройти по всем подкаталогам
-CF - оглавление каталога в несколько столбиков
-al - оглавление в полном формате
Эти ключи нужно подставлять сразу после команды sl.
Вот еще несколько команд:
cat -- слить или вывести файлы-аргументы на стандартный вывод
cp -- копировать файлы
mv -- переместить (переименовать) файлы
ln -- создать ссылку на файл
rm -- удалить файлы
Формат команды:
rm [-fri] файл ...
-i - просить подтверждения на каждое удаление
-r - рекурсивно удалить вместе с подкаталогами
-f - не просить подтверждения, а сразу удалить
rmdir - удалить директорию
mkdir - создать директорию
echo - вывести аргументы командной строки на стандартный вывод
ps - узнать номера выполняемых процессов, т.е. какие программы выполняются.
Формат команды:
ps - запущенные только с этого терминала
ps -e - все
ps -f - в "полном" формате
kill - "убить" выполняемый процес по его номеру
man - выдать справку об использовании и ключах команды
Теперь о том, как запускать файлы автоматически в определенное время.
Для этого существует механизм, называемый cron .
Для каждого пользователя создается конфигурационный файл, куда записывается расписание запуска программ. Данный конфигурационный файл каждую минуту просматривается cron'ом и запускаются те программы, время запуска которых подошло. Редактируется конфигурационный файл с помощью программы crontab .
Вот основные команды:
crontab -e : войти в режим редактирования
crontab -l : вывести все задания крона
crontab -r : удалить все задания
Команда crontab file заменят текущие настройки cron на те, которые содержатся в файле 'file'. Для этого вам нужно закачать сначала на сервер этот самый файл (например, через ftp), а затем в команде указать полный путь к нему. Пути для вашего сайта можно узнать у своего хостинг-провайдера, он их обычно указывает в инструкциях. В результате, если вы закачали файл raspisanie.txt в папку /pupkin/public_html/mypapka/raspisanie.txt , то команда будет выглядеть так:
crontab /pupkin/public_html/mypapka/raspisanie.txt ,
Когда вы задаете команду "вывести все задания крона", вы увидите нечто вида:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=pupkin
HOME=/home/pupkin
# run-parts
01 * * * * command
02 4 * * * command
Первые четыре строки просто обозначают настройку технических параметров, и на них не стоит обращать внимание (как впрочем и менять тоже).
А вот на следующие строки внимание уже стоит обратить... Формат этих строк выглядит следующим образом:
Нужная минута часа для запуска (0-59)
Нужный час дня для запуска (0-23)
Нужный день месяца (0-30)
Нужный месяц года (1-12)
Нужный день недели (0-6)
Выполнимая команда.
Значок * обозначает слово каждый (день, год, месяц, час).
Например, строка 01 * * * * command будет обозначать запуск программы каждый час в одну минуту.
А строка 02 4 * * * command означает запуск программы каждый день в 4 часа утра в две минуты.
Вы можете как создать отдельный файл со строками запуска программ, просто в столбик написав
01 * * * * command
02 4 * * * command
где command - ваша команда (запуска определенного скрипта или еще что-то), а затем просто командой "crontab file" перенести все задания из файла в крон, либо вручную все ввести в крон. Первое, на мой взгляд, удобнее.
Вот и все премудрости крона
Ну и в окончании поговорим о командах для работы с MySQL .
mysqldump - позволяет сохранить копию базы данных в текстовой файл, представляющий из себя команды SQL (о способе это сделать через phpmyadmin мы уже писали). Может быть использована при переносе базы данных с одного сервера на другой или для резервного копирования.
Формат команды:
mysqldump -u <dbuser> -p -h mysql.<доменное_имя_сайта> <dbname> > backup-file.sql
вместо <dbuser> подставьте имя субпользователя MySQL, которому присвоены права на базу dbname ( без <> )
вместо <dbname> подставьте имя своей базы данных MySQL ( без <> )
вместо 'backup-file.sql' подставьте имя файла, в который будут выведены данные
перед началом работы будет спрошен пароль доступа к базе данных.
Информация, полученная с помощью mysqldump может быть занесена в базу данных командой:
mysql -u <dbuser> -p -D <dbname> -h mysql.<доменное_имя_сайта> < backup-file.sql
Подробности о запуске этой программы можно получить командой man mysqldump
Другая полезная программа для работы с базами данных - mysql
Запускается из командной строки следующим образом
mysql -u <dbuser> -p -D <dbname> -h mysql.<доменное_имя_сайта>
Подробности о запуске этой программы можно получить командой man mysql
Перенос баз данных MySQL
Если вам нужно перенести базу данных к себе на компьютер или с одного сервера на другой, рекомендуем проделать следующее:
1. Создание копии базы на сервере №1.
mysqldump -p -u <dbuser> <dbname> -h mysql.<доменное_имя_сайта> --add-drop-table > <filename>
Тут <filename> - имя файла, где будет храниться база данных.
В процессе выполнения команды mysqldump спросит пароль пользователя MySql - нужно будет ввести его в ответ на соответствующее приглашение и нажать "Enter" - при этом набираемый пароль на терминале не отображается.
2. Содание базы данных из файла <filename> на сервере №2.
Закачиваете на сервер №2 по ftp файл <filename>
Затем, соединившись по ssh
mysqldump -p -u <dbuser> -D <dbname> -h mysql.<доменное_имя_сайта> < <filename>
Здесь, обратите внимание, dbuser, dbname и пароль могут быть другими.
Все, база перенесена!
Если вы захотите узнать побольше о UNIX и им подобных системах, подробную информацию вы можете найти на сайтах, им посвященных.
Дополнительная литература, ограничения и предупреждения
Обратим особое внимание на то, что если вы не имеете достаточного опыта работы в unix shell, нужно стараться совершать все действия аккуратно. Например, вы можете «случайно» стереть одной командой все содержимое своего сервера. Наверняка, этого не случится, но, тем не менее, старайтесь относиться к работе с удаленной unix-системой ответственно. В помощь приводем ссылки на полезную документацию по Unix:
Unix shell на нашем сервере может использоваться вами как удобное средство для копирования или перемещения файлов. Для копирования используется команда cp, а для перемещения — mv. Команда cp имеет также ключ -r (полностью cp -r), который позволяет копировать не только файлы, но и подкаталоги с файлами.
Полезные команды Unix
Примеры:
cp old/*.html new/ — копируем все файлы с расширением *.html из каталога old в каталог new
cp -r old/* new/ — копируем все файлы и подкаталоги из каталога old в каталог new
mv old/* new/ — перемещаем (копируем и удаляем на старом месте) все содержимое каталога old в каталог new
ls — показывает список файлов в текущем каталоге
ls -l — список файлов с подробностями (дата создания, размер,..)
cd — перейти в "домашний каталог" (куда вы попадаете сразу при заходе на сервер)
Команда cd (полное название — chdir) используется для перехода из одного каталога на Unix-сервере в другой. Выполняя такой переход вы изменяете текущий каталог на новый
cd .. — перейти в каталог на уровень выше
cd /home/u12345/domain.ru/www/ — перейти в каталог /home/u12345/domain.ru/www/
ls -l dir/ — получить список файлов и каталогов в подкаталоге dir с подробностями
chmod 755 script.pl — изменить режим доступа к файлу script.pl на 755 (это нужный для скриптов режим доступа);
chmod -R 755 cgi-bin/*.pl — изменить режим доступа на 755 для всех файлов с расширением *.pl в каталоге cgi-bin и во всех его подкаталогах;
chmod 000 www/file.html — изменить режим доступа к файлу file.html в каталоге www на 000. При таком режиме доступа его никто не сможет открыть. Так можно быстро запретить доступ через веб к какому-то файлу.
Основные команды текстовых редакторов
Приведем пример для редакторов vi и joe. Файлы с помощью них открываются командами vi test.txt или joe test.txt
Как быстро научится работать в редакторе VI?
Первым делом нужно зайти в редактор, для этого набираем vi, а теперь попробуем выйти, для этого набираем :q или :q! если вы успели понажимать на разные клавиши. Теперь попробуем чтото написать. Заходим в редактор и нажимаем i, только после этого можете набирать текст. Если нужно удалить лишний символ, переходим в командный режим нажав ESC, подводим курсор к символу и жмём x. Если нужно писать дальше, вновь переходим в режим редактирования, для этого нажимаем i и продолжаем печатать текст.
Список команд которые желательно запомнить:
:q — выход
:q! — выход без сохранения файла
:w — сохранить файл на диске
:wq — выход с сохранением файла
:e! — перезагрузить текущий файл
:33 — перепрыгнуть на 33ю строку текстового файла
i — перейти в режим редактирования
u — отменить последнее действие
x — удалить символ под курсором
dd — удалить всю строку
/qso — найти слово qso в тексте после курсора
Esc : wq Enter — выйти из файла, сохранив его;
Esc : q! Enter — выйти из файла, не сохранив его.
Чтобы получить подробную помощь по редактору vi, выполните команду man vi в Unix shell (q — выход из справки).
Редактор JOE
Ctrl+K H — справка по командам;
Ctrl+K X — выход из файла с сохранением;
Ctrl+K Q — выход без сохранения;
Ctrl+C — выход без сохранения (удобен, если вы ничего не изменяли);
Ctrl+K F — поиск строки;
Ctrl+L — аналог F3 в Windows(найти далее).
Коррекция часов вашего компьютера по сети
На первом CD-диске находим архив n1/ntp4.tgz (xntp.tgz) и копируем из
него только один исполняемый файл ntpdate в директорию /usr/sbin/ на
HDD-диске.
Для коррекции даты и времени в вашем компьютере запускаем: ntpdate
адрес_сервера_времени
Например: ntpdate -t 3 193.125.103.123
Опция -t устанавливает время ожидания ответа от сервера, в секундах.
apropos - поиск страницы в руководствах.
arp - таблицы ARP (Ethernet-based only).
as, gas - ассемблер. GNU-версия.
at - размещение задания в очереди.
atq - просмотр очереди заданий.
atrm - удаление задания из очереди.
batch - запуск в "пакетном режиме".
bison, yacc - создание таблиц синтаксического разбора.
bzip2 - есть не везде. Но жмёт лучше .gz.
cat - просмотр.
cc, gcc - компилятор С. GNU-версия.
cd - переход по каталогам. Переход в домашний каталог -- cd ~/
chgrp - изменение группы-владельца файла.
chmod - изменение прав доступа к файлу.
chown - смена владельца файла.
chpasswd - групповое изм. паролей.
chsh - изменение дефолтного интерпретатора команд.
cksum - контрольная сумма файла.
cmp - посимвольное сравнение двух файлов.
comm - сравнение элементов в двух отсортирванных файлах.
cp - копирование.
cron - исполнение заданий из crontab'ов пользователей/системы. Идеально для повторяющихся периодически задач.
crontab - редактирование правил запуска заданий через демона cron.
csplit - разбиение файла на куски по критериям.
ctags, gctags, etags - создание списка имён в исходном тексте.
cvs, rcs - системы управления исходными кодами. CVS -- более поздняя. RCS легда в основу CVS. по этой причине, в CVS есть команды и для CVS и для более ранней версии -- RCS.
date - просмотр/изменение даты/времени системы.
dd - прямое копирование.
depmod - опеределение зависимости модуля.
df - свободное место на диске.
diff - построчное сравнение двух файлов. Удобно для подготовки патчей (см. patch).
diff3 - построчное сравнение трёх файлов.
dig - исследование DNS.
dmesg - сообщения при загрузке системы/модулей.
du - использование диска.
env, printenv - показ переменных среды.
fgrep - поиск по фаблону в файле.
file - определение типа файла.
flex - анализатор лексем.
fuser - кто открыл этот файл?
g++, cpp - компилятор/прекомпилятор С++. GNU-версия.
gawk - потоковая обработка строк/записей в файле.
gctags - для Vi, etags - для Emacs.
gdb - отладчик.
ghostscript - отображение файлов в .PS или .PDF.
gprof - профилировщик.
grep, egrep - поиск по шаблону. egrep - расширенная команда.
groupadd - создать группу.
groupdel - удалить группу.
groupmod - изменить инфу о группе.
grpck - проверка целостности сист. файлов групп.
gzip, gunzip - .gz или .Z.
head - просмотр начала файла.
hostname - просмотр/изменение имени хоста.
ifconfig - конфиг. сетевых интерфейсов.
imake - подготовка файлов для make/pmake. Препроцессор С.
init - изменение уровня работы. Перезапуск системы или отдельных служб, относящихся к соотв. уровню.
insmod - загрузка отдельного модуля.
iptables - Linux-only firewall.
ispell - дефолтная проверка орфографии.
kill - убийство (безжалостное) процесса.
lastlog - последние подключения.
ld - линкер (редактор связей объектных файлов).
less и more - постраничный просмотр файлов.
ln - создание ссылки.
locate, find - поиск файла.
lpc - управление принтером.
lpq - просмотр очереди печати.
lpr - отправить задание на печать.
lprm - удалить задание из очереди печати.
lpstat - состояние принтера.
ls - просмотр содержимого каталога.
lsmod - список загруженных модулей.
m4 - макропроцессор.
make, pmake - сборщик программ. p-парралельный.
merge - склейка файлов из кусков.
modprobe - попытка загрузки модуля. И загрузки всех связанных с ним модулей.
mv - перенос.
netstat - статистика сети.
newgrp - смена текущей группы.
newusers - пакетное добавление пользователей.
nice, renice - изменеие приоритета задачи.
nm - объектные имена объектного файла.
nohup - запуск процесса с игнорированием прерываний с клавиатуры. Работает даже после логаута пользователя.
passwd - поменять ему пароль.
patch - управление патчами сырцов.
ping - ясно, IMHO.
portmap - биндинг демонов на порты.
pr - форматирование для печати.
ps - просмотр данных о процессах.
pwck - проверка целостности сист. файлов паролей.
pwd - определение текущего каталога.
ranlib - просмотр/восстановление таблицы архивных имён.
rarp - таблицы реверсного ARP (Ethernet-based only).
rcp- копирование на удалённую систему (небезопасно!)
reboot - перезагрузка.
recode (если ставили) или iconv - конвертирование файла из кодировки в кодировку. Для России актуально.
rm - удаление файла.
rmdir - удаление каталога.
rmmod - удаление (выгрузка) модуля.
route - управление таблицей маршрутов.
rpcgen - генератор из RPC кода на С.
rpcinfo - инфа об RPC.
runlevel - показ того, на каком уровне находимся.
screen - запуск виртуального терминала.
sed - убойный (читай, построчный) редактор. Управление редактором и редактирование задаются в виде последовательнсти команд. Удобен тем, что позволяет написать скрипт, коим патчить некие файлы сырцов.
shar - архив командного интерпретатора.
shutdown, halt - вариации на тему останова системы.
size - размер объектного файла в байтах.
split - рубка файла на куски равного размера.
strace (для Solaris - truss) - трассировка системных вызовов и сигналов.
strings - поиск строки в бинарных файлах.
strip - удаление отладочной информации/таблиц ссылок из исполняемого файла.
stty - изменение опций терминала.
su - переключение между учётными записями.
systat - инфо об удал. системе.
tail - просмотр конца файла.
tar - tape archive.
telinit - изменение режима работы.
top - то же, что и ps, но с задаваемым интервалом обновления.
traceroute - исследование пути к хосту.
uptime - время uptime'а системы.
useradd - создать пользователя.
userdel - удалить его.
usermod - поменять инфу о нём.
vi (vim) - вполне работоспособный редактор с подсветкой синтаксиса. Привыкнуть, правда, надо.
w - кто есть в системе.
wall - послать сообщение на все терминалы.
wc - подсчёт данных по содержимому файла.
whereis - поиск файлов для команды. which - полный путь к файлу.
who - кто и чего в системе делает.
whoami - проверка текущего пользователя.
zcat - просмотр упакованного файла.
команда изменения пароля любого юзера passwd admin ето для изменения пароля админа
11 Май 2010, 1:18