Пакет ssh: sftp, scp и ssh-agent
Автор: © Matteo Dell'Omodarme
|
Цель этой статьи - обзор нескольких полезных программ из пакета ssh, а именно sftp, scp, ssh-agent и ssh-add. В дальнейшем будем предполагать, что демон ssh2 уже сконфигурирован и запущен.
Краткий обзор sftp и scpДавайте сосредоточим внимание на sftp and scp.Первый (Secure File Transfer) - ftp-подобный клиент, который может быть использован для передачи файлов по сети. Он не использует FTP демонов (ftpd или wu-ftpd) для соединения, что позволяет существенно повысить уровень защиты. Анализируя журналы нашей системы за последний месяц, мы обнаружили, что 80% атак было направлено на wu-ftpd. Использование sftp прозволяет отключить потенциально опасный wu-ftpd. Второй (Secure Copy) используется для защищенного копирования файлов по сети. Это - замена небезопасной команды rcp. Sftp и scp не требуют никакого специально выделенного сервера, так как эти две программы соединяются с ssh сервером. Чтобы использовать sftp и scp вставьте следующую строку в конфигурационный файл /etc/ssh2/sshd2_config: subsystem-sftp sftp-serverпосле этой модификации перезапустите sshd. Учтите, что Вы можете пользоваться sftp и scp только при соединении с хостом, где запущен sshd. SftpSftp использует ssh2 при соединении, это означает, что передаваемые файлы защищены настолько, насколько это возможно.Есть два основных преимущества при использовании sftp вместо ftp:
sftp myname@host1некоторые опции могут быть заданы из командной строки (см. man sftp) Когда sftp2 будет готов к выполнению команд, высветится приглашение sftp>. В справочном руководстве приведен полный перечень возможных команд, некоторые из них приведем здесь:
Так как sftp использует крипто, это имеет свои минусы: уменьшение скорости
соединения (примерно в 2-3 раза по моему опыту), но это не так важно по
сравнению с проблемами защиты сети. ScpScp2 (Secure Copy) применяется для надежного копирования файлов по сети. Используется ssh2 для передачи данных, а это означает такую же надежную аутификацию, как и в ssh2Возможно это самый простой способ передачи файлов на удаленную машину. Предположим, Вы хотите скопировать файл filename из каталога d local_dir на Ваш аккаунт myname в каталог remote_dir на машине host1. Для применения scp введите в командной строке: scp local_dir/filename myname@host1:remote_dirтаким образом файл filename скопирован с тем же именем. Могут быть использованы wildcards (см. sshregex man page). Команда scp local_dir/* myname@host1:remote_dirкопирует все файлы из каталога local_dir в каталог remote_dir на host1. Команда: scp myname@host1:remote_dir/filename .копирует файл filename из remote_dir на host1 в локальный каталог. Scp поддерживает много параметров и позволяет передавать файлы с одной удаленной машины на другую, как показано в следующем примере : scp myname@host1:remote_dir/filename myname@host2:another_dirСм. man для полной ясности. Очевидно, используя scp, Вы должны знать структуру каталогов на удаленной машине, поэтому на практике предпочитают sftp. Управление ключами sshПакет SSH содержит две программы для управления аутификационными ключами, позволяя пользователю соединяться с удаленной машиной без ввода пароля или кодовой фразы. Это ssh-agent и ssh-add.ssh-agent>Читаем man ssh-agent: "ssh-agent2 - это программа для хранения аутенфикационных частных ключей. Идея в том, что ssh-agent2 стартует в начале Х-сессии или login-сессии, и все другие окна или программы стартуют как дочерние от ssh-agent2 (обычные команды запуска Х или командной оболочки). Программы, стартовавшие под агентом, наследуют подключение к нему, и агент автоматически использует аутенфикационный публичный ключ при регистрации на других машинах с использованием ssh".
Существуют два способа использовать ssh-agent в зависимости от
использования Вами xdm. exec ssh-agent ./.xsession-stuffАльтернативно откройте файл .xsession, найдите строки, содержащие "exec program" и измените их на "exec ssh-agent program". Выйдите из X-сессии и перестартуйте Х. ssh-agent запустит X-сессию как собственный дочерний процесс и будет ждать ssh ключ, чтобы внести его в свою базу. Если xdm не запущен, процедура использования ssh-agent еще проще, потому что Вы можете запустить Х с помощью команды: ssh-agent startxТаким образом мы получили рабочую версию ssh-agent. ssh-addКак только ssh-agent будет запущен, Вы можете идентифицироваться в его базе с помощью команды ssh-add. Вы можете идентифицироваться только из дочернего от ssh-agent процесса, иначе увидите сообщение об ошибке:Failed to connect to authentication agent - agent not running?Использование ssh-add несложно: в командной строке введите: ssh-addssh-add просмотрит файл $HOME/.ssh2/identification, который содержит имена частных ключей для аутификации. Если этот файл не существует, будет использовано стандартное имя для частных ключей(т.е. $HOME/.ssh2/id_dsa_1024_a). Если какой-либо публичный ключ требует кодовой фразы, ssh-add запросит ее у пользователя, как в следующем примере: Adding identity: /home/matt/.ssh2/id_dsa_1024_a.pub Need passphrase for /home/matt/.ssh2/id_dsa_1024_a (..) Enter passphrase:Вы можете получить список всех идентифицировавшихся в настоящее время с помощью агента при помощи команды ssh-add -l: Listing identities. The authorization agent has one key: id_dsa_1024_a: 1024-bit dsa, (...) Заключение и полезные ссылкиМногие пользователи telnet, rlogin, ftp возможно не понимают, что их пароли передаются по незащищенной сети, но это так. Использование защищенных протоколов позволит безопасно передавать данные по небезопасной сети.SSH, шифруя весь трафик, эффективно предотвращает прослушиваниеe, подмену подключения и другие сетевые атаки. Эта статья только введение в пакет SSH; больше Вы узнаете из справочных руководств по ssh, sshd и sftp.
Пакет SSH можно получить с:
Или попробуйте
www.openssh.com, где можно загрузить
openssh версию SSH протокола. Портируемая версия находится на
www.openssh.com/portable.html.
|
Copyright © 2001, Matteo Dell'Omodarme. Copying license http://www.linuxgazette.com/copying.html Published in Issue 64 of Linux Gazette, March 2001 |
Вернуться на главную страницу |