О чем тут? Да обо всем подряд. Это моя записная книжка. В основном тут бэкапы заинтересовавших меня статей, новости и ссылки.

Работаем с PuTTY из Windows

| 30 июл. 2009 г.

Работаем с PuTTY из Windows

Игорь Лаврушов
г.Кисловодск

Putty это несколько отдельных программ, предназначенных для работы с unix-сервером по протоколам SSH1, SSH2, Telnet, Rlogin, Raw. Автором PuTTY является Simon Tatham. Программа работает на Win для Intel x86 и Alpha, а также на UNIX. Несмотря, на то что программа довольно популярна во всем мире, статей по практической работе с ней я не нашел, тем более что есть ньюансы, которые нужно учитывать. Чтобы устранить этот пробел и написана данная статья. Итак, полный комплект программ, под общим названием putty, состоит из нескольких утилит, их назначение вы видите ниже:

    putty.exe - клиент для соединения с сервером по протоколам telnet, ssh, raw, rlogin
    puttytel.exe - только telnet клиент
    puttygen.exe - генератор rsa/dsa ключей
    pagent.exe - агент аутендификации, хранит ключи в памяти, при его использовании не нужно ручками вводить ключевую парольную фразу
    plink.exe - интерфейс командной строки для putty
    pscp.exe - безопасное копирование файлов
    psftp.exe - безопасный ftp клиент для копирования, просмотра, переименования файлов и т.д.

Установка
Скачайте с домашней странице PuTTY последнюю версию программы или только те утилиты, которые вам нужны для работы. Устанавливать putty необязательно, можно просто скопировать файлы в нужную директорию. Я например, храню комплект putty на флешке и ношу его с собой.

Создание пары ключей
Для укрепления безопасности, при работе с сервером, лучше отключить вход по паролю и создать ключи с ключевой парольной фразой. Для этого предназначена утилита puttygen.exe, внешний вид которой вы видите на экране. После запуска, установите тип создаваемых ключей SSH1(RSA), SSH2(RSA) или SSH2(DSA), говорят что SSH2(RSA) самый защищенный. Теперь нужно выбрать длину ключа в битах, по умолчанию там установлено 1024. Меньшее значение установить можно, но SSH2 сервер работать с короткими ключами не будет. Я не рекомендую использовать стандартные длины ключей типа 1024, 2048, 4096 лучше измените длину случайным образом 1429, 2361, 3417 и т.д. Далее нажмите кнопку Generate и поводите мышкой по пустому KEY-полю, пока ползунок дойдет до конца, после этого будут сгенерированы два ключа.



Нажмите кнопку Save public key, для того чтобы записать на диск публичный ключ, назовем его rsa-pub. Этот файл вы скопируете на SSH сервер, для того чтобы он вас узнавал. Теперь нажмите Save private key, и запишите на диск ваш секретный ключ с именем rsa-priv который будет храниться только у вас и передавать его никуда не нужно. Парольную фразу, лучше создать, хотя можно работать и без нее, просто создайте ключ большей длины 3926бит например. Итак, на диске вы имеете два файла rsa-pub и rsa-priv.ppk. Если на сервере вы используете OpenSSH, то перед тем как вы скопируете rsa-pub на ваш удаленный сервер, нужно его скорректировать! Без этого, этот ключ не будет работать в unix системах с OpenSSH! Оригинальный файл rsa-pub, который был создан puttygen, выглядет так:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20050107"
AAAAB3NzaC1yc2EAAAABJQAAAIEA0vzPSq4tpvZf12OSyd6Q+F+tAEFMSn8kC1eQ
fqIZ9qCX2NNIJkYbtRrwZxLDTw4BR2zEuN+uHXZ4mepIKwtVHIUUiHoYUV8k/hXX
NbO0UMk=
---- END SSH2 PUBLIC KEY ----

Удалите первую, вторую и последнюю строки из него, впереди напишите ssh-rsa затем пробел, далее идет код с убранными символами переноса строки, в конце один пробел. Выглядеть отредактированный файл rsa-pub, будет так:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEA0vzPSq4tpvZf12OSyd6Q+F+tAEFMSn8kC1eQfqIZ9 qCX2NNIJkYbtRrwZxLDTw4BR2zEuN+uHXZ4mepIKwtVHIUUiHoYUV8k/hXXNbO0UMk=

Вот теперь файл rsa-pub с публичным ключем, готов к отправке на удаленный unix сервер и работать он будет корректно. Можно сделать по другому, выделите ключ в окне KEY, затем создайте пустой файл командой copy con rsa-pub и нажмите F6, теперь скопируйте в файл rsa-pub ключ из буфера, результат тотже.

Пересылка публичного ключа на сервер
Перед тем как послать файл с ключем на сервер, нужно создать на сервере директорию .ssh в домашнем каталоге пользователя, под которым мы будет заходить и затем переслать сам файл, заодно его нужно переименовать. Сделать это можно средствами unix сервера, а можно и с помощью psftp.exe, команда выглядет так:

          сжатие     файл с командами         ip сервера
| | |
psftp -v -C -2 -b makesshdir.scr username@172.133.51.19
| |
SSH2 пользователь
При соединении, один раз, будет запрошен пароль пользователя username. Файл makesshdir.scr состоит из нескольких команд:
    mkdir .ssh
    cd .ssh
    put rsa-pub authorized_keys
    quit

Вход на сервер
Зайти на сервер вы можете несколькими способами. Если вы заходите по паролю, можно указать его прямо в строке или ввести по запросу (что, прямо скажем, более безопасно, так как пароль указывается в открытом виде), вот как будут выглядеть эти команды:

    putty -v -ssh -C -2 -pw ft6nHi4gAr username@172.133.51.19
    putty -v -ssh -C -2 username@172.133.51.19
Если вы заходите с указанием ранее сгенерированного ключа, введите такую команду:
    putty -v -ssh -C -2 -i rsa-priv.ppk username@172.133.51.19
После того как вы проверили, что вход с ключем работает, отключите возможность входа по паролю на ваш сервер. Для этого в файле /etc/sshd_config измените следующие команды:
    PasswordAuthentication no
    PermitEmptyPasswords no
Незабудте отключить возможность соединяться с сервером по устаревшему протоколу SSH1, для этого установите (есть конечно и другие команды, но здесь мы о другом читаем):
    Protocol 2

Пересылка файла
При работе с сервером, периодически возникает необходимость передать файл на сервер или принять файл с сервера. Сделать это можно утилитами pscp.exe и psftp.exe. На мой взгляд, pscp.exe использовать удобнее. Ниже смотрим на пример, который показывает, как можно по защищенному каналу, переслать файл stat0211.tgz из своего ПК на удаленный сервер:

            сжатие   исходный файл          ip сервера
| | |
pscp.exe -v -C -2 stat0211.tgz username@172.133.51.19:
| |
SSH2 пользователь
При выполнении команды в таком виде, сервер запросит пароль. Чтобы это избежать можно добавить строку с паролем
-pw Fgt5tg6y или указать ключ -i rsa-priv.ppk что значительно лучше, из соображений безопасности.

Теперь, мы захотели получить файл из удаленного сервера и сохранить его на своем ПК. Разные варианты команд, приведены ниже. Здесь все как и в предыдущих командах, вообщем, разберайтесь сами:

    pscp -v -C -2 -i rsa-priv.ppk username@172.133.51.19:config.tgz config.tgz
    pscp -v -C -2 -pw node1xnet username@172.133.51.19:rc.local rc.local
    pscp -v -C -2 username@172.133.51.19:rc.modules rc.modules

Манипуляции с файлами
Утилита psftp.exe также как и pscp.exe позволяет копировать файлы, но возможности ее значительно больше. Psftp.exe может производить манипуляции с файлами на удаленном сервере и на локальном ПК. Для работы с этим клиентом в ручном режиме, кликните по файлу psftp мышкой. В появившейся командной строке, наберите open 142.45.110.18, ведите пароль для соединения с указанным сервером. В вашем распоряжении, следующие команды:

    ! - выполнить команду на локальном компьютере
    lcd - изменить текущую директорию на локальном пк
    lpwd - показать текущую директорию на локальном пк

    chmod - изменить права файлов или директорий
    mv - переименовать файл
    del, rm - удалить файл
    dir, ls - показать список файлов и директорий
    cd - изменить текущую директорию
    mkdir - создать новую директорию
    rmdir - удалить пустую директорию
    pwd - показать текущую директорию

    open - соединиться с указанным сервером
    close - закрыть текущую SFTP сессию без выхода из psftp
    bye, exit, quit - закрыть текущую сессию и выйти из программы
    help - список команд с пояснениями

    get - загрузить файл на локальный пк (с удаленного сервера)
    mget - загрузить много файлов на локальный пк
    reget - продолжить загрузку файлов на локальный пк
    put - загрузить файл на сервер (с локального пк)
    mput - загрузить много файлов на сервер
    reput - продолжить загрузку файлов на сервер
Самое приятное, что все эти команды можно задавать в автоматическом режиме и таким образом автоматизировать работу с удаленным сервером. Команды должны записываться в отдельный файл с расширением .scr в той последовательности в какой они будут выполняться. Исполняемая команда будет выглядеть всегда одинаково, так как вы видите ниже, а вот содержимое файла test1.scr будет меняться в зависимости от задачи. Некоторые возможности, уже были описаны выше.
    psftp -v -C -2 -i rsa-priv.ppk -b test1.scr username@172.133.51.19

отсюда