Некоторые моменты работы с ssh, которыми пользуешься достаточно редко.
Генерация ключа для работы по протоколу второй версии
Копирование открытого ключа на удаленный сервер
host - ip или адрес удаленного сервера
Ключ прописывается на удаленной машине в файл /home/user/.ssh/authorized_keys.
Подключение к удаленному серверу с использованием ключа другого пользователя.
Удобно использовать в скриптах
Если выполнить указанный выше пример в скрипте (обратите внимание, что в данном случае команда указывается без кавычек!)
Форвардинг портов
ext_ip - внешний интерфейс шлюза
host_ip - адрес машины во внутренней сети, для которой пробрасываем порт
ext_port - порт внешнего интерфейса на который форвардим host_port (порт машины во внутренней сети).
Предварительно нужно зайти на шлюз по ssh.
Используем когда нужно срочно что либо сделать во внутренней сети из внешнего мира. Для форвардинга на постоянной основе используем iptables.
Копирование файлов на удаленный сервер
Генерация ключа для работы по протоколу второй версии
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@hostuser - имя пользователя на удаленном сервере
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_portint_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 на локальной машине от имени текущего пользователя.
Кул... про ssh-copy-id я не знал. Закопипейстю... ;)
ОтветитьУдалить