среда, 14 октября 2009 г.

Пара слов про ssh

Некоторые моменты работы с ssh, которыми пользуешься достаточно редко.



Генерация ключа для работы по протоколу второй версии
ssh-keygen
В результате выполнения создает пару открытый/закрытый ключ. По умолчанию  сохраняет их в папке ~/.ssh. Во время генерации ключей предлагает ввести пароль, если ничего не вводить, то впоследствии позволяет заходить по ssh на удаленный сервер без пароля. Для изменения текущего пароля без пересоздания ключей запустить с ключом -p, будет запрошен текущий пароль и два раза новый пароль.

Копирование открытого ключа на удаленный сервер
ssh-copy-id -i /home/user/.ssh/id_rsa.pub user@host
 При копировании открытого ключа используемого по умолчанию (~/.ssh/id_rsa.pub) ключ -i можно не указывать, т.е.
ssh-copy-id user@host
user - имя пользователя на удаленном сервере
host - ip или адрес удаленного сервера
Ключ прописывается на удаленной машине в файл /home/user/.ssh/authorized_keys.

Подключение к удаленному серверу с использованием ключа другого пользователя.
ssh -i /home/user/.ssh/id_rsa host
Выполнение команды на удаленном сервере
Удобно использовать в скриптах
ssh host "command"
Например, в результате выполнения команды
 ssh server.domain.ru "df -l -h -T -x tmpfs"
на текущей консоли увидим:
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda3     ext3     28G  3.0G   24G  12% /
/dev/hda4     ext3     44G  181M   41G   1% /home
При этом отключение производится сразу по выполнении команды указанной в  кавычках.
Если выполнить указанный выше пример в скрипте (обратите внимание, что в данном случае команда указывается без кавычек!)
result=`ssh server.domain.ru df -l -h -T -x tmpfs`
result будет содержать результат выполнения команды df на удаленном сервере в одну строку:
Filesystem    Type    Size  Used Avail Use% Mounted on /dev/hda3 ext3 28G 3.0G 24G 12% / /dev/hda4 ext3 44G 181M 41G 1% /home
 Форвардинг X11 через ssh
ssh host -X
 Позволяет запускать графические приложения на удаленной машине.

Форвардинг портов
ssh int_ip -L ext_ip:ext_port:host_ip:host_port
int_ip - внутренний интерфейс шлюза
ext_ip - внешний интерфейс шлюза
host_ip - адрес машины во внутренней сети, для которой пробрасываем порт
ext_port - порт внешнего интерфейса на который форвардим host_port (порт машины во внутренней сети).
Предварительно нужно зайти на шлюз по ssh.
Используем когда нужно срочно что либо сделать во внутренней сети из внешнего мира. Для форвардинга на постоянной основе используем iptables.


Копирование файлов на удаленный сервер
scp -i /home/user/.ssh/id_rsa /dir1/file_src user@host:/dir2/
Копирует файл file_src из папки dir1 на локальной машине в папку  dir2 на удаленной машине от имени пользователя user.
scp host:/dir1/file_src /dir2/
 Копирует файл file_src из папки dir1 на удаленной машине в папку  dir2 на локальной машине от имени текущего пользователя.

1 комментарий: