пример:
перебросить локальный порт 2000 на удаленный порт 25
ssh -f -L [bind_address:]2000:local.org:25 -nNT user@remote.org
пояснения:
-f - перейти в фон после запуска
local.org - локальный сервер
user@remote.org - удаленный сервер с которым соединяемся
[bind_address:] - необязательный параметр (по умолч.: localhost)
-L 2000 - локальный порт для начала туннеля
:25 - удаленный порт для конечной точки туннеля
-N - не выполнять удаленных команд
-n - связать стандартное устройство ввода с /dev/null
-T - не создавать псевдо tty на удаленной системе
пример:
перебросить удаленный порт 2000 на локальный порт 25
ssh -f -R [bind_address:]2000:local.org:25 -nNT user@remote.org
пояснения:
[bind_address:] - необязательный параметр (по умолч.: localhost)
-R 2000 - удаленный порт 2000
добавить в sshd_config:
GatewayPorts clientspecified
“Стремись не к тому, чтобы добиться успеха,
а к тому, чтобы твоя жизнь имела смысл”
Альберт Энштейн
среда, 9 февраля 2011 г.
Использование Bourne shell (bash) как CGI скрипта
Пример скрипта:
остается только скопировать это
в файл http://server.org/cgi-bin/test.sh
и установить права доступа: chmod 755 test.sh
Переменные окружения доступные внутри CGI скрипта:
http://tldp.org/LDP/abs/html/networkprogramming.html
остается только скопировать это
в файл http://server.org/cgi-bin/test.sh
и установить права доступа: chmod 755 test.sh
Переменные окружения доступные внутри CGI скрипта:
http://tldp.org/LDP/abs/html/networkprogramming.html
понедельник, 7 февраля 2011 г.
Настройка доступа SSH через SSHD демона
Настройки сервера:
1. Настраиваем /etc/openssh/sshd_config
DSAAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
2. Генерируем пару ключей и устанавливаем пароль
ssh-keygen -b 1024 -t dsa -C "home machine"
пароль можно поменять:
ssh-keygen -p [-N новый_пароль] [-f keyfile]
файлы готовы:
публичный ключ: (нужно добавить в ~/.ssh/authorized_keys)
~/.ssh/id_dsa.pub
установим права доступа
chmod 600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
добавляем публичный ключ к списку
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
приватный ключ: (должен храниться в безопасном месте)
~/.ssh/id_dsa
переместим его на удаленную машину-клиент
выполним на клиентской машине:
scp user@host.org:~/.ssh/id_dsa ~/.ssh/
3. Перезапускаем сервис
service sshd restart
Настройки клиента:
-вручную
1. добавляем ключи
ssh-add ~/.ssh/id_dsa
[вводим пароль]
2. соединяемся
ssh user@mysite.com
-автоматизация+псевдоним(alias)
1. создаем фал vi ~/.ssh/config
2. прописываем параметры
Host myhost
User usr
Port 2222
HostName host.org
IdentityFile ~/.ssh/id_dsa
3. соединяемся
ssh myhost
1. Настраиваем /etc/openssh/sshd_config
DSAAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
2. Генерируем пару ключей и устанавливаем пароль
ssh-keygen -b 1024 -t dsa -C "home machine"
пароль можно поменять:
ssh-keygen -p [-N новый_пароль] [-f keyfile]
файлы готовы:
публичный ключ: (нужно добавить в ~/.ssh/authorized_keys)
~/.ssh/id_dsa.pub
установим права доступа
chmod 600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
добавляем публичный ключ к списку
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
приватный ключ: (должен храниться в безопасном месте)
~/.ssh/id_dsa
переместим его на удаленную машину-клиент
выполним на клиентской машине:
scp user@host.org:~/.ssh/id_dsa ~/.ssh/
3. Перезапускаем сервис
service sshd restart
Настройки клиента:
-вручную
1. добавляем ключи
ssh-add ~/.ssh/id_dsa
[вводим пароль]
2. соединяемся
ssh user@mysite.com
-автоматизация+псевдоним(alias)
1. создаем фал vi ~/.ssh/config
2. прописываем параметры
Host myhost
User usr
Port 2222
HostName host.org
IdentityFile ~/.ssh/id_dsa
3. соединяемся
ssh myhost
воскресенье, 6 февраля 2011 г.
Документация по Git
Достаточно подробная документация по Git: http://progit.org/book/ru/
Опыт работы: http://habrahabr.ru/blogs/Git/60347/
Настройка сервера:
1. подключаемся к серверу
ssh myserver.com
2. переходим в нужный каталог
cd /var/git && mkdir myapp.git && cd myapp.git
git --bare init
3. выходим
exit
Настройка клиента:
1. получаем локальную копию
git clone git@myserver.com:/var/git/myapp.git
2. добавляем файлы
git add .
3. сохраняем в локальном репозитории
git commit -a -m "Initial commit"
4. отправляем изменения на удаленный репозиторий
git push origin master
добавление списка игнорирования(svn+git)
1. создаем файл
vi .svnignore
2. добавляем список
.git
.gitignore
3. установим свойство
svn propset svn:ignore -F .svnignore .
4. проверим
svn propget svn:ignore .
5. добавим файл в репозиторий
svn add .svnignore
6. отправляем в репозиторий
svn commit -m "added .svnignore"
Опыт работы: http://habrahabr.ru/blogs/Git/60347/
Настройка сервера:
1. подключаемся к серверу
ssh myserver.com
2. переходим в нужный каталог
cd /var/git && mkdir myapp.git && cd myapp.git
git --bare init
3. выходим
exit
Настройка клиента:
1. получаем локальную копию
git clone git@myserver.com:/var/git/myapp.git
2. добавляем файлы
git add .
3. сохраняем в локальном репозитории
git commit -a -m "Initial commit"
4. отправляем изменения на удаленный репозиторий
git push origin master
добавление списка игнорирования(svn+git)
1. создаем файл
vi .svnignore
2. добавляем список
.git
.gitignore
3. установим свойство
svn propset svn:ignore -F .svnignore .
4. проверим
svn propget svn:ignore .
5. добавим файл в репозиторий
svn add .svnignore
6. отправляем в репозиторий
svn commit -m "added .svnignore"
четверг, 27 января 2011 г.
Монтирование файловой системы в Linux
1. перемонтирование корневой файловой системы в Linux
mount -n -o rw,remount /
2. монтирование windows/samba сетевых папок
добавляем в fstab:
mkdir -p /mnt/Download
//myhost/Download /mnt/Download cifs auto,credentials=/home/usr/.credentials,rw,uid=1000,_netdev,user,iocharset=utf8,codepage=866,noexec,nosuid 0 0
содержимое файла: /home/usr/.credentials
username=myusername
password=mypasswd
mount -n -o rw,remount /
2. монтирование windows/samba сетевых папок
добавляем в fstab:
mkdir -p /mnt/Download
//myhost/Download /mnt/Download cifs auto,credentials=/home/usr/.credentials,rw,uid=1000,_netdev,user,iocharset=utf8,codepage=866,noexec,nosuid 0 0
содержимое файла: /home/usr/.credentials
username=myusername
password=mypasswd
вторник, 18 января 2011 г.
appweb-3.2.3-3
Найдена ошибка в исходном коде этой версии: appweb-3.2.3-3
Ошибка проявляется при использовании Redirect с любым кодом и адресом. Сервис аварийно завершается.
[http_pipeline.patch]
--- appweb3_2/src/http/pipeline.c.orig 2011-01-05 11:19:35.105182966 +0600
+++ appweb3_2/src/http/pipeline.c 2011-01-05 11:20:20.145183017 +0600
@@ -48,12 +48,12 @@
*/
alias = req->alias = maGetAlias(host, req->url);
mprAssert(alias);
+ location = req->location = maLookupBestLocation(req->host, req->url);
+ mprAssert(location);
if (alias->redirectCode) {
maRedirect(conn, alias->redirectCode, alias->uri);
return;
}
- location = req->location = maLookupBestLocation(req->host, req->url);
- mprAssert(location);
req->auth = location->auth;
resp->extension = getExtension(conn);
[http_pipeline.patch]
Ошибка проявляется при использовании Redirect с любым кодом и адресом. Сервис аварийно завершается.
[http_pipeline.patch]
--- appweb3_2/src/http/pipeline.c.orig 2011-01-05 11:19:35.105182966 +0600
+++ appweb3_2/src/http/pipeline.c 2011-01-05 11:20:20.145183017 +0600
@@ -48,12 +48,12 @@
*/
alias = req->alias = maGetAlias(host, req->url);
mprAssert(alias);
+ location = req->location = maLookupBestLocation(req->host, req->url);
+ mprAssert(location);
if (alias->redirectCode) {
maRedirect(conn, alias->redirectCode, alias->uri);
return;
}
- location = req->location = maLookupBestLocation(req->host, req->url);
- mprAssert(location);
req->auth = location->auth;
resp->extension = getExtension(conn);
[http_pipeline.patch]
Linux chroot
Практический пример размещения приложения/сервиса в chroot окружении.
# определим загружаемые библиотеки
cd /[path_to_nginx]/
ldd nginx
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7eb1000)
libdl.so.2 => /lib/libdl.so.2 (0xb7eac000)
...
libexpat.so.0 => /lib/libexpat.so.0 (0xb775b000)
# копируем все библиотеки в /jail
mkdir -p /jail/lib/ && cd /jail/lib/
cp /lib/libcrypt.so.1 .
cp /lib/libdl.so.2 .
...
cp /lib/libexpat.so.0 .
# копируем все необходимые файлы используемые приложением
cd /[path_to_nginx]/
strace ./nginx 2>&1 | grep open
open("/etc/ld.so.cache", O_RDONLY) = 4
open("/usr/lib/libxml2.so.2", O_RDONLY) = 4
...
open("/usr/local/nginx/conf/nginx.conf", O_RDONLY|O_LARGEFILE)=4
# внутри jail структура каталогов должна повторять текущее положение
mkdir -p /jail/etc/ && cd /jail/etc/ && cp /etc/ld.so.cache .
mkdir -p /jail/usr/lib/ && cd /jail/usr/lib/ && cp /usr/lib/libxml2.so.2 .
...
mkdir -p /jail/usr/local/nginx/conf/ && cd /jail/usr/local/nginx/conf/ &&
cp /usr/local/nginx/conf/nginx.conf .
#создаем null устройство
mkdir -p /jail/dev/
mknod /jail/dev/null c 1 3
chmod 666 /jail/dev/null
#- если нужны другие устройства (для других сервисов)
#JAILPATH=/jail
#mknod -m 666 $JAILPATH/dev/urandom c 1 9
#mknod -m 666 $JAILPATH/dev/null c 1 3
#mknod -m 666 $JAILPATH/dev/zero c 1 5
#mknod -m 666 $JAILPATH/dev/tty c 5 0
# запускаем nginx в jail (тюрьме)
chroot /jail/ /sbin/nginx
PS:
Помещение приложения в jail не исключает побега из созданной тюрьмы.
# определим загружаемые библиотеки
cd /[path_to_nginx]/
ldd nginx
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7eb1000)
libdl.so.2 => /lib/libdl.so.2 (0xb7eac000)
...
libexpat.so.0 => /lib/libexpat.so.0 (0xb775b000)
# копируем все библиотеки в /jail
mkdir -p /jail/lib/ && cd /jail/lib/
cp /lib/libcrypt.so.1 .
cp /lib/libdl.so.2 .
...
cp /lib/libexpat.so.0 .
# копируем все необходимые файлы используемые приложением
cd /[path_to_nginx]/
strace ./nginx 2>&1 | grep open
open("/etc/ld.so.cache", O_RDONLY) = 4
open("/usr/lib/libxml2.so.2", O_RDONLY) = 4
...
open("/usr/local/nginx/conf/nginx.conf", O_RDONLY|O_LARGEFILE)=4
# внутри jail структура каталогов должна повторять текущее положение
mkdir -p /jail/etc/ && cd /jail/etc/ && cp /etc/ld.so.cache .
mkdir -p /jail/usr/lib/ && cd /jail/usr/lib/ && cp /usr/lib/libxml2.so.2 .
...
mkdir -p /jail/usr/local/nginx/conf/ && cd /jail/usr/local/nginx/conf/ &&
cp /usr/local/nginx/conf/nginx.conf .
#создаем null устройство
mkdir -p /jail/dev/
mknod /jail/dev/null c 1 3
chmod 666 /jail/dev/null
#- если нужны другие устройства (для других сервисов)
#JAILPATH=/jail
#mknod -m 666 $JAILPATH/dev/urandom c 1 9
#mknod -m 666 $JAILPATH/dev/null c 1 3
#mknod -m 666 $JAILPATH/dev/zero c 1 5
#mknod -m 666 $JAILPATH/dev/tty c 5 0
# запускаем nginx в jail (тюрьме)
chroot /jail/ /sbin/nginx
PS:
Помещение приложения в jail не исключает побега из созданной тюрьмы.
Подписаться на:
Сообщения (Atom)