SSH tips and tricks

Standard

Я уже говорил как подключаться по ssh, чтобы быстрее работать. Теперь дам пару советов, как использовать ssh на полную:

Если при подключении возникают, какие-то проблемы — используйте ключ -v (verbose) для debug сообщений ssh.

Escape символ ssh — «~», позволяет исполнять команды на локальной машине, не отключаясь от удаленного хоста, чтобы сделать это нажмите ~^Z (ctrl + Z).  Правда я в таких случаях обычно открываю новый терминал, но работать в одном терминале обычно получается быстрей. Когда вы захотите вернуться выполните команду jobs, она покажет список остановленных процессов с идентификаторами, нажмите fg %1 и ssh, снова будет работать.

Чтобы посмотреть статистику сессии выполните ~s (сочетание не будет отображено на экране), работает только на ssh второй версии.

Теперь быстрые tips & tricks:

  1. Вывод вашего микрофона на колонки удаленного компьютера: dd if=/dev/dsp | ssh -c arcfour -C [email protected] dd of=/dev/dsp Правда звук будет очень плохой.
  2. Сравнить удаленный и локальный файлы ssh [email protected] cat /path/to/remotefile | diff /path/to/localfile
  3. Можно примонтировать «удаленную файловую систему» sshfs [email protected]:/path/to/folder /path/to/mount/point
  4. Использовать удаленный компьютер, как прокси для подключения к другому компьютеру по ssh: ssh -t first_host ssh second_host
  5. Скопировать файл с удаленного компа на другой удаленный комп, используя свой как прокси: ssh host1 «cd /fromfile && tar -cf -.» | ssh host2 «cd /tofile && tar -xf -»
  6. Запустить любую GUI программу удаленно: ssh -fX host program
  7. Создать постоянное ssh подключение к машине: ssh -MNf host. Это нужно, в случае частых подключений к удаленному хосту, например при синхронизации файлов (rsync/sftp/svn/git) на постоянной основе, тк компьютеры не будут открывать новый сокет каждый раз, соответственно времени на подключение уходить не будет.
  8. Удалить ключ из файла: ssh-keygen -R bad_host

Как быстро подключаться к серверам

Standard

Вместо того чтобы постоянно вбивать ssh [email protected] и потом вводить пароль, есть решение намного лучше — использование alias`ов при подключении по ssh.

Для начала надо сгенерировать ключи — это делается с помощью программы ssh-keygen, в процессе генерации она спросит название файла (по умолчанию id_rsa ) и passphrase. После генерации в текущей директории у нас появятся 2 файла: id_rsa (закрытый ключ) и id_rsa.pub (публичный ключ) . Закрытый ключ никому не показываем.

Дальше есть несколько способов:

  1. Публичный ключ копируем на сервер и выполняем следующую команду » cat id_rsa.pub >> ~/.ssh/authorized_keys » дальше удаляем файл id_rsa.pub, ~ папка — это домашняя папка того юзера к к-му мы хотим подключаться, к примеру, если мы подключаемся, как [email protected] — это будет папка /home/vasya/
  2. Либо выполняем команду ssh-copy-id, например ssh-copy-id [email protected] — нас спросят один раз пароль и всё — ключ скопирован. Можно задать туже команду с ключом i — явно указав какой публичный ключ использовать, например ssh-copy-id -i /somedir/somekey.pub [email protected] .

Теперь мы можем подключаться без пароля по ssh как [email protected]  Но это еще не все — мы можем больше).

Если запишем на машину с которой подключаемся в файл ~/.ssh/config  следующие строки:

Host somehost
User vasya
Hostname  myhost
PasswordAuthentication no

Теперь достаточно вызвать команду ssh somehost и мы уже на сервере, и это работает во многих программах — scp, например обычное копирование с macbook на удаленный сервер scp localfile remotehost:/somedir/remotefile.

Так как я в php проектах зачастую использую symfony 1.4, опишу способ деплоя приложения на production.  Файл /config/properties.ini :

[production]
host=myserver
port=22
dir=/var/www/mymegasite.ru/htdocs/

Дальше команда в консоли ./symfony project:deploy production —go и никаких паролей не надо вводить!

Подключаемся к базе данных на виртуальной машине

Standard

Итак в первом шаге мы установили виртуальную машину, допустим нам надо подключиться к бд. Я долго пользовался SQLYog и это очень классный, понятный инструмент, но запоминать hotkeys для разных программ надоело и я решил пользоваться netbeans для доступа к бд. Да и еще, к сожалению SQLYog нельзя подключить на Linux, но я пользовался им под wine и работал он лучше чем ожидалось, правда иногда выкидывал. Стандартный порт для MySQL  - 3306, если попытаемся подключиться напрямую — нас пошлют, приходиться использовать порт форвардинг. Что это такое и как его готовить ниже.

Все действия производились для windows 7:

1) Скачиваем putty:

 

 

 

 

 

 

2) Вводим адрес сервера:

 

 

 

 

 

 

3) Вводим порты. Поясню что мы делаем: мы подключаемся по ssh к нашему серверу и говорим, что на локальном компьтере все запросы на порт 3306 должны пересылаться удаленному компу на тот же порт — 3306. В удаленной конфигурации хост указан как localhost, но это может быть любой другой компьютер к которому сервер имеет доступ, например если бд хоститься на другой машине и доступа через инет к ней нету. После этого без разницы с помощью чего подключаться SQLYog, MySQL Workbench просто выбираете в качестве хоста — localhost. Кстати все это применимо и к php коду, т.е. вызов mysql_connect(‘localhost’, ‘user’, ‘password’) на винде создаст подключение к бд на удаленной машине!

 

 

 

 

 

 

Нажимаем open и логинемся

 

 

 

 

 

 

4) Идем в netbeans выбираем «Службы», дальше «Новое соединение»

 

 

 

 

 

 

5) Выбираем mysql в списке драйверов, изначально я пробовал установленный вместе с netbeans MySQL (Connector/J driver), но

почему-то он не заработал, поэтому я скачал драйвер отсюда

 

 

 

 

 

 

6) Вбиваем данные для подключения

 

 

 

 

 

 

7) Подключаемся и теперь мы можем манипулировать через netbeans бд

 

 

 

 

 

 

 

P.S. Я только начал пользоваться nebeans для работы с бд, но сомневаюсь что он затмит SQLYog. Да и чуть не забыл, порт форвардинг на Mac OS и Linux:

ssh -fNg -L 3306:localhost:3306 [email protected]

выводы делайте сами :)