ssh
tar + ssh
GNU tar умеет создавать архив на удалённой системе через ssh
$ tar --rsh-command=/usr/bin/ssh -jcvf host:/tmp/archive.tar.bz2 dir-or-filesНастройка удалённого рабочего стола на tightvnc
Настройка удалённого рабочего стола на tightvnc.
Имеем:
1. work - компьютер на работе с ubuntu 10.04 (имеет белый ip или возможность прямого проброса портов через роутер)
2. home - компьютер дома с ubuntu 10.04 (имеет серый ip, например в сети передачи данных Beeline Internet)
3. Интернет и руки.
Что нужно:
Как зайти на удалённый рабочий стол из дома на работу (например во время болезни),
Приступим:
SSH: Прокси сервер из своего хостинга.
В поисках создание собственного прокси сервера нашел в инете интересную статью, но для windows.
Поправил и было сделано под линукс (хотя оригинал был сделан из nix под винду):
1. Подключаемся к хостингу и открываем за одно порт-форвардинг через ssh:
$ ssh -D8080 your@hostingВводим пароль.
2. В браузере выбираем socks прокси 127.0.0.1:8080
И все! Работает на ура.
Докачка с scp. со вкусом openssh.
в теме Докачка с scp. Способы решения проблемы отлично решили проблему на стороне клиента с помощью curl и поддержки curl-лом sftp/scp протокола.
Вот только я не смог научиться подать в качестве параметра curl ключ, дабы избежать интерактивности с вводом пароля или открытым текстом его давать в качестве другого параметра.
предлагаю вашему вниманию скриптик (true unixway) для докачки по ssh.
scpresume login@remote.org.ua -f /var/log/fastgrow/remote.log -t /tmp/localcopy.log
multiple ssh private keys
Про безпарольную авторизацию в ssh с помощью ключей не пишет разве что ленивый. Зачастую бывает нужно использовать разные ssh-ключи для различных групп серверв/хостов.
Например по ролям, территориальному признаку, логину ... ну и вообще..
Набирать каждый раз полный путь к файлу с ключем, а главное помнить в каких случаях какой ключ нужен - лень. Да, лень двигатель прогресса: видел как люди пишут алиасы на такие ssh-команды (сам такой), а еще пишут про ssh-agent. но в этом типсе пример работы с несколькими ключами, и распределеним каким ключем на какой хост ходить.
собственно типс - перевод статьи "multiple ssh private keys" Karanbir Singh
Оптимизация канала для ssh соединения.
Обнаружил что за одну минуту работы с ssh через GPRS соединение у меня уходит до 750 кБ в зависимости от режима работы.
И решил я это дело прооптимизировать используя сжатие канала.
Автоматизировать систему или команды crontab
У вас офисная или домашная сеть?
У вас несколько компов и вам часто приходиться их синхронизировать?
Вам надоели каждый день повторяющие команды?
Вам надо "говорящие часы" или напоминалка умеющий отправлять смсы или письма?
Тогда этот совет предназначен для вас.
Скачка и закачка файлов в текущей ssh сессии
Если вместо ssh использовать zssh, то появляется дополнительная возможность скачать/залить файл на удаленную систему прямо в текущей сессии.
Для этого используются стандартные програмки sz/rz для отправки/получения файлов через терминал из пакета lrzsz.
Что бы не забывать запускать zssh вместо ssh сделал себе алиас в ~/.zshrc
# где то в начале файла autoload -U compinit compinit -u ~ ## disable security check in home directory # ... if which zssh > /dev/null; then alias ssh=zssh compdef zssh=ssh # что бы автодополнение для zssh работало так же как и для ssh fi
Так же удобно в случае когда у вас на удаленном сервере есть sudo, то можно отправлять/получать файлы на которые у вашего пользователя обычно нет прав (например /etc/shadow Ж:-) В противном случае пришлось бы мучатся с копированием, изменением прав на файл и подобное.
Выдержка из help (не забываем прочитать man)
Usage :
Download : run sz on the remote shell before switching to transfer mode
then type rz
Upload : switch to transfer mode and type sz <files>
rz will be automatically run on the remote side
Tips:
- If file transfer never completes, use the -e option of sz/rz
- Transfers can be interrupted with ^C
- If you get stuck in rz/sz (for example you've just ran rz, but you
then decided not to transmit anything), hit a dozen ^X to stop it
- Use sz -y <files> to overwrite remote filesИ как обычно, живой пример использования:
зайдя с ноутбука komarik на машину komar захотелось забрать одну книгу и залить другую.
Как ограничить доступ к серверу только по SFTP
Бывает, нужно ограничить доступ к компьютеру только по SFTP, не давая пользователям возможности залогиниться в shell. Для этого нужно сделать 2 вещи:
1. Добавить sftp-server в список разрешенных шеллов:
Найдите sftp-server на вашем сервере (для Debian/Ubuntu это будет /usr/lib/sftp-server, для RHEL это /usr/libexec/openssh/sftp-server). Добавьте нужный вам полный путь к нему отдельной строчкой в /etc/shells
# echo '/path/to/sftp-server' >> /etc/shellsгде /path/to/sftp-server - полный путь к вашему sftp-server
2. Поставить sftp-server шеллом нужного пользователя
Либо отредактируйте /etc/passwd и поставьте опять же полный путь к sftp-server в пользовательской записи вместо /bin/bash, либо воспользуйтесь командой usermod, i.e.
# usermod -s /path/to/sftp-server userid, где /path/to/sftp-server - полный путь к SFTP на вашей системе, а userid - имя пользователя
Ссылка: 10 трюков в командной строке, о которых вы не знали. Честное слово.
10 трюков в командной строке, о которых вы не знали. Честное слово.
Рекомендую так же почитать коментарии, так как в статье не всегда оптимально.
via nexus
Запускаем sshd под cygwin (windows)
Полная дока тут. .
Это выдержки и краткое описание возможных проблем.
0. Генерируем локальные /etc/passwd и /etc/group
$ mkpasswd -l > /etc/passwd $ mkgroup -l > /etc/group
1. Устанавливаем пакет openssh через setup.exe cygwin-а
2. Настраиваем sshd
$ ssh-host-config -y3. Если у вас установлен tcp_wrapper то нужно закоментировать все строки с deny в /etc/hosts.allow
$ sed -i -e 's/.*deny.*/#&/' /etc/hosts.allow4. Запускаем sshd
$ cygrunsrv --start sshdЕсли где то сбоит, смотрим в логи
$ mmc eventvwr.mscНапример где то в PATH может лежать дублирующийся cygwin1.dll (у меня в WinAVR).
Или выдавало ошибку с fork(): которая фиксилась отключением сервиса "Logitech Process Monitor".
(кстати отключение этого сервиса так же вылечило сбои при запуске zsh o_O)
зайти в screen на удалённой системе
Требуется: Приатачиться к screen, запущенному на удалённой системе с минимальным количеством телодвижений.
Решение:
Не обязательно, но все таки:
1. делаем беспарольную аутентификацию как рассказно здесь
затем
2.
$ ssh -t login@host 'source .bashrc; screen -x'Готово!
3. И на последок, что бы все вышеперечисленное таки совершалось с наименьшим количеством телодвижений, создаем скрипт:
$ cat >remotescreen !#/bin/sh ssh -t login@host 'source .bashrc; screen -x' $chmod 755 remotescreen
3.a ... или делаем алиас в любимом .*shrc
alias remotescreen="ssh -t login@host 'source .bashrc; screen -x'"P.S. в пункте 2 заменить .bashrc на соответствующий .zshrc, итд...
SSHFS в две строчки
Чтобы начать работать с sshfs (монтирование удаленных файловых систем через ssh), необходимо
1) установить пакет sshfs
apt-get install sshfs
2) добавить пользователя в группу fuse или воспользоваться sudo:
sudo sshfs user@machine:directory localdirectory
где user@machine - логин и имя удаленной машины, directory - подмонтируемая директория на удаленной машине (если ее пропустить, подмонтируется домашняя директория пользователя user), localdirectory - локальная директория для маунта.
2a) чтобы позволить другим людям воспользоваться маунтом, укажите опцию '-o allow_other' после localdirectory.
3) отключение производится командой
fusermount -u localdirectory
P.S.: Если вы получаете ошибку:
fuse: failed to exec fusermount: Permission denied
убедитесь, что вы выполнили пункт (2). За остальными опциями добро пожаловать в man sshfs :-)
Доступ к компьютеру за файерволом
Бывает, что требуется получить доступ к компьютеру, который находится за файерволом или выходит в интернет изза NAT. Файервол пропускает исходящие соединения, но не впускает входящие. Хочется настроить зафаерволенный компьютер так, чтобы к нему впоследствии можно было подключиться. В этом случае можно действовать разными способами (специальные программы вроде zebedee здесь не рассматриваются).
Как выжить в Windows без переключения расскладок по CapsLock
1. если вы в Windows только для того что бы подключится по ssh куда нибуть и набрать там письмо или отправить sms сообщение, то самый простой вариант взять популярный ssh клиент putty у которого есть встроенная опция по CapsLock переключатся на кириллицу. В настройках соединения ставим галочку в Window -> Translation -> Caps Lock acts as Cyrillyc switch и наслаждаемся результатом Ж:-)
2. Если вы задержались в Windows подольше и хотите перелючатся по CapsLock во всех приложе ниях, то тут поможет програмка lswitch.exe которую можно взять тут . Запускаем как:
lswitch.exe 20спасибо nexus за типс Ж:-)
3. Ну раз уж нужно обосноватся в Windows подольше, то можно настроить X-Windows с правильным переключением расскладок.
Сетевые возможности vim
Редактировать файл .zshrc в домашней папке пользователя user,
по протоколу scp на машине remote.org.ua
$ vim scp://user@remote.org.ua/.zshrcРедактировать файл /etc/motd пользователем root,
по протоколу sftp на машине remote.org.ua
$ vim sftp://root@remote.org.ua//etc/motdБровзить в директории pub в домашней директории юзера ftp, по протоколу ftp
$ vim ftp://ftp@remote.org.ua/pubИмеется возможность выбрать файл для редактирования, удалять/создавать/неперименовывать
директории/файлы, скачивать файлы, просматривать файлы во внешних просмотрщиках (например *.jpg
с помощью feh), создавать букмарки на директории и иметь возможность возвращатся в эти директории
по букмаркам, различные способы сортировки имен файлов/директори, списки файлов и директорий
который не нужно отображать.. и многое другое можно прочитать в помощи vim:
:help netrw-browseАвтоматический запуск ssh-agent
Ранее было рассказано как настроить ssh-agent для автоматической авторизации приложений работающих с ssh. Если вы не используете X-Windows, то ssh-askpass вам не поможет. Зато можно настроить запуск ssh-agent в вашем шеле.
Идея в том что бы указать сокет ssh-agent с жестко заданным именем, и если ssh-agent незапущен, то запустить его.
добавляем в ~/.zshrc или ~/.bashrc
[ ! -S ~/.ssh/ssh-agent ] && eval `/usr/bin/ssh-agent -a ~/.ssh/ssh-agent` [ -z $SSH_AUTH_SOCK ] && export SSH_AUTH_SOCK=~/.ssh/ssh-agent
Настройка _безопасной_ безпарольной аутентификации по ssh
Вот здесь описан способ безпарольной авторизации http://linsovet.com/ssh-auth-pubkey
Обратите внимание на пункт 1) где мы отказываемся от ключевой фразы на файл с приватным ключем. Это обозначает что, если злоумышленник украдет у нас этот файл, он сможет авторизироватся на нашем сервере без пароля.
Решением этой проблемы - установка ключевой фразы на файл с приватным ключом. Но тогда нам придется вводить это фразу каждый раз при использовании ssh. Получается что поменяли шило на мыло, и вместо пароля на сервер, вводим пароль к ключу. Это конечно лучше, когда у вас десяток серверов, и на все нужно помнить пароли. Но хочется же безпарольной авторизации, и притом что бы не даже украденый ключ ничего не мог дать злоумышленнику.
Скрипт для временного поста файлов в интернет
Часто бывает что нужно временно выложить в интернет какой нибудь файл и дать ссылку для скачивания. Этот скрипт облегчает заливку файлов на сервер по ssh и выводит урл
Пример использования:
$ postit bin/postit bin/postit.html postit 100% 370 0.4KB/s 00:00 postit.html 100% 2060 2.0KB/s 00:00 http://remote.org.ua/tmp/postit http://remote.org.ua/tmp/postit.html
#!/bin/sh # by ramok (c) 2006 idea by nexus # upload files by ssh, and show url # change your settings hire SSH_URL=user@remote.org.ua:~user/www/data/tmp/ WWW_URL=http://remote.org.ua/tmp/ # try do not touch below Ж;-)) [ -z $1 ] && printf "Usage: `basename $0` file [file..]" 1>&2 && exit 1 scp $@ $SSH_URL echo $@ | sed -e 's|[^ /]*/||g' -e 's|\([^ /]*\)[ ]*|'${WWW_URL}'\1\n|g'
Запрет запуска sshd в debian
touch /etc/ssh/sshd_not_to_be_run




