<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sveshnikov.ru - это наилучший источник информации по теме unix perl shell и всего такого &#187; ssh</title>
	<atom:link href="http://alexey.sveshnikov.ru/blog/tag/ssh/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexey.sveshnikov.ru/blog</link>
	<description>bookmarks-on-tranquilizers</description>
	<lastBuildDate>Tue, 25 May 2010 20:30:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SSH для бэкапов и мониторинга: ограничиваем доступ.</title>
		<link>http://alexey.sveshnikov.ru/blog/2008/03/04/restricted-ssh/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2008/03/04/restricted-ssh/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 23:12:57 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[SHELL]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/2008/03/04/restricted-ssh/</guid>
		<description><![CDATA[&#8220;Бэкап &#8211; акт проявления трусости&#8221; (c) народная мудрость Я труслив :) Во-первых, я делаю бэкапы. Во-вторых, я их боюсь передать без шифрования и, в третьих, иногда и храню их зашифрованными. Как правильно организовать передачу бэкапов с одного сервера на другой? Дампы этого блога у меня передаются по http. Они зашифрованны, да и особо ценных данных [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: right;"><i>&#8220;Бэкап &#8211; акт проявления трусости&#8221; (c) народная мудрость</i></div>
<p>Я труслив :) Во-первых, я делаю бэкапы. Во-вторых, я их боюсь передать без шифрования и, в третьих, иногда и храню их зашифрованными.</p>
<p>Как правильно организовать передачу бэкапов с одного сервера на другой? Дампы этого блога у меня передаются по http. Они зашифрованны, да и особо ценных данных здесь нет, поэтому http меня не смущает. А как поступить с данными по-важнее? Конечно, ssh. А как при этом запретить пользователю выполнять какие-либо действия, кроме как копирования к себе бэкапа? Представим себе, что бэкап-сервер находится во вражеском дата-центре или просто вы не можете проконтролировать к нему доступ (в т.ч. физический). Нас выручит опция command файла authorized_keys.</p>
<p>Например, если необходимо предоставить доступ только к файлу backup.tgz, то в authorized_keys в самом начале соответствующей строки можно дописать следующее &#8220;command=&#8217;cat backup.tgz&#8217;&#8221;. Теперь при каждом коннекте будет автоматически выполняться команда cat backup.tgz, вам остается только перенаправить вывод в файл. Если дампов несколько, то можно написать небольшой скриптик вида:<code>#!/bin/sh<br />
read file<br />
case "$file" in<br />
"foo") cat foo.tgz ;;<br />
"bar") cat bar.tgz ;;<br />
esac</code> И прописать его в качестве команды по умолчанию. Да, не лишним было бы добавить опции no-port-forwarding, no-pty и все прочие no-*</p>
<p>Теперь копировать файл с удаленной машины можно вот такой командой:<code>echo "foo" | ssh backup@server > foo-`date +%Y-%m-%d`.tgz</code></p>
<p>Кроме как для бэкапов, такое же решение может подойти и для мониторинга. Когда нагиос стучится на удаленный сервер, чтобы собрать какую-либо статистику, полный ssh-доступ ему не нужен.</p>
<p>По-моему, все, что я описал примитивно по сложности и вместе с тем весьма надежно. Так может быть прекратим без надобности дописывать authorized_keys на серверах? Одна запись для себя, любимого, одна для бэкапов, одна для мониторинга.. ой, еще каких-то две..  дальше продолжать? :)</p>
<p>Кстати, а есть ли способы более тонко настраивать уровень доступа к ssh?</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2008/03/04/restricted-ssh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Что получится, если скрестить fuse и ssh? &#x202E;[файловая система sshfs]</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/08/29/sshfs/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/08/29/sshfs/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 20:58:03 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[fuse]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/2007/08/29/%d1%87%d1%82%d0%be-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%81%d1%8f-%d0%b5%d1%81%d0%bb%d0%b8-%d1%81%d0%ba%d1%80%d0%b5%d1%81%d1%82%d0%b8%d1%82%d1%8c-fuse-%d0%b8-ssh-%d1%84%d0%b0%d0%b9/</guid>
		<description><![CDATA[А получится sshfs. sshfs позволит вам монтировать каталоги на удаленных машинах по протоколу SFTP; пользоваться им настолько просто, что даже рассказать в этой заметке практически нечего: ни тебе интрижки с накладыванием патчей и сборкой пакета, ни тебе объектного языка конфигурационных файлов. Тоска, одним словом. Но для sshfs это, вобщем-то, плюс. Итак, начнем с установки пакета [...]]]></description>
			<content:encoded><![CDATA[<p>А получится <a href="http://fuse.sourceforge.net/sshfs.html">sshfs</a>.<br />
sshfs позволит вам монтировать каталоги на удаленных машинах по протоколу SFTP; пользоваться им настолько просто, что даже рассказать в этой заметке практически нечего: ни тебе интрижки с накладыванием патчей и сборкой пакета, ни тебе объектного языка конфигурационных файлов. Тоска, одним словом.</p>
<p>Но для sshfs это, вобщем-то, плюс. Итак, начнем с установки пакета и добавления себя в группу fuse, делается это так:<br />
<code>apt-get install sshfs<br />
sudo adduser your_name fuse<br />
</code></p>
<p>Команда adduser в таком контексте ничего, кроме добавления уже существующего пользователя в группу не делает, так что не нужно смущаться от ее неожиданного выхода на сцену. После этого нам нужно перелогиниться, чтобы изменения в /etc/group вступили силу.</p>
<p>Мне пришлось выполнить еще одну операцию: сменить группу у устройства /dev/fuse. Я думаю, это особенность лично моего дистрибутива, но если у вас тоже попытки монтирования будут завершаться ошибкой &#8220;что-то там permission denied&#8221;, то вот вам команда:<br />
<code>chgrp fuse /dev/fuse<br />
</code>По-хорошему, ее надо прописать куда-нибудь в автозагрузку, например, в /etc/rc.local.</p>
<p>Теперь все готово для монтирования:<br />
<code>mkdir mount_point<br />
sshfs remoteuser@remotehost:/some/folder ~/mount_point<br />
ls mount_point<br />
</code></p>
<p>Ну вот, собственно, и все, можно работать.</p>
<p>Теперь настало время рассказать об одном ограничении: кроме нас, никто в системе не сможет воспользоваться примонтированным каталогом. Сама возможность пустить туда других пользователей есть, но корректность операций записи не гарантируется (могут быть повреждены атрибуты файла &#8211; владелец и пр.). Поэтому перед тем, как открывать доступ к важным данным лучше все-таки поставить эксперимент на копии. Также несколько странные результаты будет выдавать команды du и df, но по-моему, это я уже придираюсь :)</p>
<p>В итоге, мы имеем отличную замену scp/sftp или fish (встроенная в mc и konqueror оболчка для sftp) для случаев, когда нужно выполнить действия посложнее, чем копирование.</p>
<p>Дальнейшее чтение: <a href="http://fuse.sourceforge.net/wiki/index.php/SshfsFaq">FAQ по sshfs</a>, <a href="http://fuse.sourceforge.net/wiki/index.php/FileSystems">Другие основанные на fuse файловые системы</a></p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/08/29/sshfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Удаленный рабочий стол. UNIX-way :)</title>
		<link>http://alexey.sveshnikov.ru/blog/2007/08/06/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b9-%d1%81%d1%82%d0%be%d0%bb-unix-way/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2007/08/06/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b9-%d1%81%d1%82%d0%be%d0%bb-unix-way/#comments</comments>
		<pubDate>Mon, 06 Aug 2007 13:56:11 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[общее]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[x]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=31</guid>
		<description><![CDATA[Как всегда, существует уйма способов запускать графические программы удаленно. Не все из них основаны на туннелинге X-трафика, но именно с ним играться интересней всего. Приступим :) Собственно, на практике страшная фраза &#8220;сделать туннелинг Х-протокола&#8221; обозначает, что нужно добавить опцию X к ssh. Получается, что в простейшем случае запустить удаленную графическую программу можно так: ssh -X [...]]]></description>
			<content:encoded><![CDATA[<p>Как всегда, существует уйма способов запускать графические программы удаленно. Не все из них основаны на туннелинге X-трафика, но именно с ним играться интересней всего.</p>
<p>Приступим :)</p>
<p>Собственно, на практике страшная фраза &#8220;сделать туннелинг Х-протокола&#8221; обозначает, что нужно добавить опцию X к ssh. Получается, что в простейшем случае запустить удаленную графическую программу можно так:<br />
<code>ssh -X user@host firefox </code></p>
<p>Kdesktop от других программ ничем не отличается:<br />
<code>ssh -X user@host kdesktop </code></p>
<p><img src='http://alexey.sveshnikov.ru/blog/wp-content/uploads/2007/09/qtdesignersmall.png' alt='Удаленный или локальный десктоп? Вот в чем вопрос.'  align="right"/><br />
Неудобство последней команды как способа удаленного входа заключается в том, что в случае, если какая-либо оболочка уже запущена, то неизбежны конфликты и долгие раздумья на тему принадлежности какого-нибудь окошка удаленной или локальной машине. Поэтому все что нужно сделать &#8211; это использовать подобную команду <b>вместо</b> оболочки.</p>
<p>Я это сделал так:<br />
<code>xinit /usr/bin/ssh -X user@host startkde -- :1</code><br />
Набирать команду следует из обычной, неиксовой консоли (Ctrl-Alt-F1), и работать она будет только в случае, если на удаленной машине уже лежит наш публичный ключик, т.к. не будет возможности ввести пароль. (<a href="http://www.yandex.ru/yandsearch?text=ssh+%EF%F3%E1%EB%E8%F7%ED%FB%E9+%EA%EB%FE%F7">что такое публичный ключ</a>). Полный путь к ssh на некоторых дистрибутивах обязателен.</p>
<p>Теперь сочетанием клавиш Ctrl-Alt-F7 и Ctrl-Alt-F9 можно переключаться между локальным и удаленным рабочим столом (хотя F9 для удаленной машины &#8211; это лично у меня, у вас может быть также F8 или F10). Да, и делать это лучше только если соединение между машинами быстрое, иначе нервных расстройств не избежать :)</p>
<p>Этот пост написан с рабочего десктопа, но через ноутбучную оперу :)</p>
<p>А что интересного с помощью ssh удавалось сделать вам?</p>
<p><i>UPD через 20 мин: Отправил ноутбук в ребут и через некоторое время понял, что работаю на удаленной машине. 5 секунд паники, 10 &#8211; на сохранение и минута чтобы понять, что я ошибся :) Вобщем, для людей со слабым сердцем не рекомендую так работать, а сам я теперь осторожен, как сапер на минном поле :) </i></p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2007/08/06/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d0%b9-%d1%81%d1%82%d0%be%d0%bb-unix-way/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Hints [5..8]</title>
		<link>http://alexey.sveshnikov.ru/blog/2006/11/24/hints-58/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2006/11/24/hints-58/#comments</comments>
		<pubDate>Fri, 24 Nov 2006 14:08:20 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=12</guid>
		<description><![CDATA[[5]. Допустим, есть огромный (5Gb) файл, из которого нужно извлечь все строки, содержащие слово &#8220;error&#8221;, а также посчитать md5 и количество строк. Можно сделать это в пять приемов и потратить полчаса, но есть способ проще и быстрее: #cat big_file &#124; tee >(md5) >(wc -l) &#124; grep "error" > big_file_errors Т.е. все нужные действия производятся за [...]]]></description>
			<content:encoded><![CDATA[<p>[5]. Допустим, есть огромный (5Gb) файл, из которого нужно извлечь все строки, содержащие слово &#8220;error&#8221;, а также посчитать md5 и количество строк. Можно сделать это  в пять приемов и потратить полчаса, но есть способ проще и быстрее:<br />
<code>#cat big_file | tee >(md5) >(wc -l) | grep "error" > big_file_errors</code><br />
Т.е. все нужные действия производятся за один цикл чтения!</p>
<p>Таким же образом можно скопировать файл с удаленного хоста и одновременно посчитать md5:<br />
<code>#ssh remote_host "cat /home/user/file" | tee >(md5) > file</code><br />
(в linux вместо md5 нужно писать md5sum)</p>
<p>[6]. Если есть открытый ssh-сеанс на удаленной машине, можно поднять туннель, прямо в этом же сеансе. Комбинация клавиш &#8220;~C&#8221; позволяет отредактировать командную строку. Например, если написать &#8220;-D 1080&#8243;, то будет поднят прокси на 1080-м порту.</p>
<p>[7]. При работе с лог-файлами в sh-скриптах может понадобиться преобразовать дату из human-readable формата в unixtime. Делается это так:<br />
<code>#date -j -f "%d/%m/%Y %H:%M:%S" "18/08/2006 16:43:02" "+%s"</code><br />
Опция -j запрещает команде date делать попытки установить дату.<br />
-f &#8211; формат даты в строке, которую следует разобрать<br />
&#8220;+%s&#8221; &#8211; отобразить дату в формате unixtime. Если этот аргумент опустить, то дата будет выведена в стандартном UTC формате (пятница, 18 августа 2006 г. 16:43:02 (MSD))</p>
<p>[8]. Во FreeBSD есть утилита bdes, позволяющая (де)криптовать файлы из командной строки.<br />
<code>#cat file | bdes > file.cripted<br />
Enter key:
<passphrase here=""></code><br />
Также есть утилита enigma, но криптостойкость ее алгоритмов очень низка (вернее, отсутствует)</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2006/11/24/hints-58/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ssh и анонимность</title>
		<link>http://alexey.sveshnikov.ru/blog/2006/08/08/ssh-%d0%b8-%d0%b0%d0%bd%d0%be%d0%bd%d0%b8%d0%bc%d0%bd%d0%be%d1%81%d1%82%d1%8c/</link>
		<comments>http://alexey.sveshnikov.ru/blog/2006/08/08/ssh-%d0%b8-%d0%b0%d0%bd%d0%be%d0%bd%d0%b8%d0%bc%d0%bd%d0%be%d1%81%d1%82%d1%8c/#comments</comments>
		<pubDate>Tue, 08 Aug 2006 13:59:22 +0000</pubDate>
		<dc:creator>Alexey Sveshnikov</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SHELL]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://alexey.sveshnikov.ru/blog/?p=6</guid>
		<description><![CDATA[Сегодня обнаружил, что текстовое поле в конце файла id_rsa.pub &#8211; просто комментарий. Это значит, что после копирования его на удаленный хост в authorized_keys можно заменить свой настоящий логин и имя хоста на строку &#8220;тут был Вася&#8221; и никто никогда не поймет, кто такой Вася и как он сюда попал. И еще. Можно работать на удаленном [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня обнаружил, что текстовое поле в конце файла id_rsa.pub &#8211; просто комментарий. Это значит, что после копирования его на удаленный хост в authorized_keys можно заменить свой настоящий логин и имя хоста на строку &#8220;тут был Вася&#8221; и никто никогда не поймет, кто такой Вася и как он сюда попал.<br />
И еще. Можно работать на удаленном хосте, не светясь ни в auth.log, ни в `who` ни в `last`, без возможности посмотреть, что творится в консоли через watch &#8211; для этого достаточно запускать ssh-сессию так: ssh user@host &#8220;bash&#8221;.</p>
<p>Мораль здесь одна: если у человека есть ssh аккаунт на машине, то контроллировать его действия практически невозможно.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexey.sveshnikov.ru/blog/2006/08/08/ssh-%d0%b8-%d0%b0%d0%bd%d0%be%d0%bd%d0%b8%d0%bc%d0%bd%d0%be%d1%81%d1%82%d1%8c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
