Ssh Доступ С Указанием Ключа

On
Ssh Доступ С Указанием Ключа 4,9/5 8506 reviews

В нескольких предыдущих статьях данного раздела, мы более-менее раскрыли тему протокола SSH, настройку и использование SSH сервера и SSH клиента в операционной системе FreeBSD. В данной статье хотелось-бы рассказать об SSH аутентификации на основе пар ключей, заодно рассмотреть остальные программы из пакета программного обеспечения, протокола SSH, под FreeBSD. Итак, нужно это в первую очередь для удобства, при, не нужно вводить пароль при каждом подключении, и в определенной степени более безопасно, нежели подключаться к удаленной машине только по паролю. Общий принцип для аутентификации на основе публичного ключа, в протоколе SSH, таков:. С помощью программы ssh-keygen, должна быть сгенерирована пара ключей, публичный ключ ( public key ) и приватный ключ ( private key ). Секретный ключ, всегда остается у клиента и никому никогда не показывается. Публичный ключ копируется на удаленный SSH сервер ( говорим опять-же в контексте операционной системы FreeBSD ) и кладется в специальный файл, известный SSH серверу.

Jul 30, 2012 - Его копируют на сервера, куда нужно получить доступ. Команда ssh-copy-id user@server позволяет скопировать ключ не редактируя. Аутентификация ssh по ключу с Putty на Windows. 31 июля 2014 12 августа 2016 rusadmin Защита и безопасность. Аутентификация в ssh по ключу имеет несколько преимуществ. Во-первых, удобство. У вас может быть несколько серверов и один ключ.

По-умолчанию, для хранения публичных ключей, используется файл /.ssh/authorizedkeys. Файл для хранения ключей назначается в файле конфигурации SSH сервера, директивой AuthorizedKeysFile.

Клиент, отправляет SSH серверу свой публичный ключ и запрашивает аутентификацию по данному ключу. Сервер проверяет файл /.ssh/authorizedkeys, если такой ключ найден, SSH сервер отправляет клиенту сообщение, зашифрованное найденным публичным ключом пользователя. Клиент должен расшифровать сообщение с помощью своего приватного ключа, если приватный ключ защищен паролем ( а так и должно быть всегда, в целях безопасности ), программа ssh, попросит пользователя ввести пароль, что-бы сначала расшифровать сам ключ. Если сообщение расшифровано, правильность публичного и приватного, ключей, считается подтвержденной и пользователю предоставляется доступ в систему. Экзаменационные билеты машинист бульдозера. Весь процесс аутентификации можно посмотреть, с помощью опции -v ( verbose ), программы ssh, очень полезная штука, особенно на стадии настройки серверной и клиентской частей протокола SSH.

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

Здесь приведу лишь несколько из них: -t type ssh-keygen, работает с тремя типами ключей. Возможные значения: RSA 1 - для протокола SSH версии 1. RSA - для протокола SSH версии 2. DSA - для протокола SSH версии 2.b Длина ключа в битах.

RSA - минимальная длина, 768 бит, длина ключа по-умолчанию, 2048 бит. DSA - длина 1024 бита.i Данная опция используется для импорта ключей из одного формата ( например ключи сгенерированные программой PuTTYgen, для Windows ), в формат OpenSSH.l Посмотреть отпечаток секретного ключа ( fingerprint ).p Изменить секретную фразу приватного ключа. Сгенерируем пару RSA ключей, это рекомендуемый формат, как наиболее устойчивый к взлому. По-умолчанию, ключи, сохраняются в домашнюю директорию пользователя, в файлы /.ssh/idrsa - приватный ( секретный ) ключ, и /.ssh/idrsa.pub - публичный ключ.

Vds-admin /root# ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/idrsa): Здесь предлагается ввести путь для сохранения файлов ключей. Имейте в виду, если просто указать свое имя файла, например: mynewidrsa, то ключи будут сохранены в корне домашней директории пользователя, в моем случае в директории /root, с именами: mynewidrsa и mynewidrsa.pub. Enter passphrase (empty for no passphrase): Enter same passphrase again: Здесь вас попросят ввести секретную фразу, настоятельно рекомендую делать это всегда. ) Your identification has been saved in /root/.ssh/idrsa.

Your public key has been saved in /root/.ssh/idrsa.pub. The key fingerprint is: 56:79:b5:61:ea:19:70:13:a4:67:a2:af:15:11:db:b5 root@vds-admin. The key's randomart image is: +- RSA 2048-+ E. o o. B +.So o =. O.o =.+o o.+.o +-+ Вот собственно и все, сгенерирована пара ключей RSA, с длиной 4096 бит и сохранены в файлы /root/.ssh/idrsa и /root/.ssh/idrsa.pub.

Настройка SSH сервера на аутентификацию по открытому ключу. SSH сервер естественно должен быть настроен на аутентификацию по ключам, приведу кусок, касающийся аутентификации, своего файла конфигурации, SSH сервера. Все что закомментировано в файле конфигурации SSH, отсюда убрал, для простоты восприятия: PermitRootLogin yes Данная директива нужна, если вы планируете работать под учетной записью root.

PubkeyAuthentication yes AuthorizedKeysFile.ssh/authorizedkeys RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no UseLogin no Теперь копируем публичный ключ на удаленный SSH сервер: vds-admin /root/.ssh# cat idrsa.pub ssh 192.168.50.50 'cat /.ssh/authorizedkeys' Так как для копирования вы подключаетесь к SSH серверу, он запросит пароль, авторизацию по ключам-то мы еще не настроили. ) Я работал под учетной записью root, а без явного указания имени пользователя в командной строке или в конфигурационном файле SSH клиента, подключение происходит с именем текущего пользователя, то есть мне нужно было ввести пароль пользователя root, удаленной системы. После ввода пароля, публичный ключ будет добавлен в конец файла /.ssh/authorizedkeys, так как мы подключаемся пользователем root, то путь /.ssh/authorizedkeys указывает на директорию /root/.ssh/authorizedkeys. Ключи сгенерированы и скопированы на SSH сервер, сервер соответствующим образом настроен, пробуем подключится: vds-admin /root/.ssh# ssh 192.168.50.50 Enter passphrase for key '/root/.ssh/idrsa': Здесь вводим нашу секретную фразу, указанную при генерации ключей. Если пароль на ключ введен верно, получаем доступ в удаленную систему. Обратите внимание на следующий момент, с приведенным выше вариантом конфигурации SSH сервера, при неудачной аутентификации по ключам, например если неправильно ввести секретную фразу ключей, будет предложена аутентификация по паролю.

Что-бы изменить это поведение и например вообще не пускать пользователя root иначе, как по ключам, можно изменить в конфигурационном файле сервера, значение директивы PermitRootLogin с yes на without-password. Использование программы ssh-agent Как было сказано выше, в целях безопасности, приватный ключ, всегда должен быть защищен секретной фразой ( паролем ), но это вызывает некоторые неудобства, вам придется вводить секретную фразу, каждый раз когда вы подключаетесь к удаленному серверу по ключу, было-бы гораздо проще ввести пароль на ключ один раз и пользоваться им сколько потребуется. На этот случай в пакете OpenSSH, существуют специальные программы ssh-agent и ssh-add, в общем-то вторая является дополнением первой. Как это работает.

Поле запуска программы ssh-agent, в нее добавляются расшифрованные ключи, то есть при добавлении она запросит секретную фразу ключа, для его дешифровки, и далее ssh-agent, будет выдавать уже расшифрованные ключи по запросу, например программе SSH. Запускать ssh-agent, можно двумя способами, со специальной опцией, говорящей, какой тип оболочки используется, или с помощью команды eval. Принципиальной разницы как его запускать, нет, просто в случае с опцией, вы должны точно знать, какую оболочку вы используете. Ssh-agent -c Если в качестве оболочки используется С - Shell ssh-agent -s Если в качестве оболочки используется Bourne Shell eval `ssh-agent` В таком варианте запущенный ssh-agent, будет передан команде eval, которая выполнит его в текущей оболочке. Обратите внимание, используются обратные кавычки а не обычные! Итак, запускаем ssh-agent: vds-admin /root/.ssh# eval `ssh-agent` Agent pid 1982 При запуске, ssh-agent создает переменные окружения, проверим какие: vds-admin /root/.ssh# env grep SSHA SSHAUTHSOCK=/tmp/ssh-7EeitdI5mr/agent.1981 В этой переменной хранится сокет, через который программа ssh, будет связываться с ssh-agent.

SSHAGENTPID=1982 Это PID процесса ssh-agent Теперь нужно поместить в него расшифрованные ключи, делается это с помощью программы ssh-add. Если запустить ее без аргументов, будут добавлены все ключи, найденные в стандартных местах их обитания, то есть будут просканированы следующие файлы, /.ssh/identify, /.ssh/idrsa и /.ssh/iddsa.

Если ключ защищен парольной фразой, программа попросит ввести ее, что-бы расшифровать ключ и загрузить уже готовый к применению. Vds-admin /root/.ssh# ssh-add Enter passphrase for /root/.ssh/idrsa: Запрос пароля на расшифровку Identity added: /root/.ssh/idrsa (/root/.ssh/idrsa) Теперь пробуем подключиться к удаленному SSH серверу: vds-admin /root/.ssh# ssh 192.168.50.50 Last login: Tue Jul 7 18: from.host. Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 7.1-STABLE (SMPKERNEL) #1: Tue Mar 10 18:14:59 UTC 2009 Welcome to FreeBSD! Как видите пароль у нас больше никто не спрашивает, программа SSH, получает уже расшифрованный ключ от ssh-agent и мы успешно подключаемся к удаленному SSH серверу.

Посмотреть отпечатки загруженных в ssh-agent ключей, можно той-же командой ssh-add с опцией -l, или целиком ключи, опцией -L. Сделал скрипт на Expect. Может пригодится!:) 1. Ставим Expect из портов /usr/ports/lang/expect 2.

Вот, пишу, что я делаю по порядку: 1. Запустил VBox(ubuntu Server 14.04.1) - открытый доступ к серверу из хостовой машины на VBox - норм заходит, без проблем. Ключи будут храниться в /home/nehalem/.shh/authorizedkeys - создал папки 3.

Генерю ключ ssh-keygen -t rsa 4. Ключи создались в /home/nehalem/.ssh (idrsa idrsa.pub) 5. Перемещаю ключи в /home/nehalem/.shh/authorizedkeys (sudo mv idrsa authorizedkeys sudo mv idrsa.pub authorizedkeys) 6.

Sudo nano /etc/ssh/sshdconfig: # Authentication: LoginGraceTime 120 PermitRootLogin without-password #PermitRootLogin no StrictModes yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile /.ssh/authorizedkeys ChallengeResponseAuthentication yes PasswordAuthentication yes 7. Запускаю psftp.exe: - open 192.168.56.10 (авторизовуюсь - логин, пароль) - качаю себе idrsa (get idrsa) - В puttygen.exe загружаю idrsa - сохраняю private key в формате idrsa.ppk 8. Перезагружаю сервер 9. Открываю putty.exe, в Connection - SSH - Auth указываю файл idrsa.ppk - подключаюсь: Просит ввести логин (хотя я указал в Connection Rloagin) ввожу Ответ: Server refused our key Using keyboard-interactive authentication.

Просит ввести пароль, ввожу - вхожу, но не по ключу.

Ssh Доступ С Указанием Ключа

Как создать RSA ключи для доступа на сервер и как обезопасить SSH соединение с помощью публичного ключа — именно такими вопросами задаются многие люди, которым приходится работать удаленно с крупными проектами. Действительно, доступ на сервер с помощью ключа RSA — это удобно и полезно с точки зрения безопасности. Недавно и я столкнулся с такой проблемой, а так как опыта работы в Linux у меня не очень много, то поиск толкового гайда отнял больше времени, чем я думал.

Поэтому хочу поделиться полученным опытом и подробно описать шаги для новичков. Сперва теория. Что нам для этого нужно? Во-первых, создать пару специальных криптографических ключей — открытый и закрытый. (Подробнее об алгоритме RSA можете почитать в ). Внести изменения в файл настроек сервиса SSH в Ubunt’e для того, чтобы указать, где искать сам ключ и для того, чтобы запретить авторизацию по паролю (если это нужно). Список необходимых программ:.

PuTTYgen. Pageant Их все можно скачать со. Итак, порядок действий. Коннектимся на удаленный сервак с помощью PuTTY. Переходим в директорию /.ssh/. Для этого выполняем команду cd /.ssh/ 3.

Собственно, создаем сами ключи. Для этого выполняем: ssh-keygen -t rsa После выполнения этой команды увидите следующее Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/idrsa): #нажимаем ENTER, если хотим оставить созданные ключи в папке /.ssh/ Enter passphrase (empty for no passphrase): #вводим пароль (или, если не хотите защищать ключи паролем, не вводим и оставляем пустым) и нажимаем ENTER Enter same passphrase again: #повторяем пароль и опять ENTER Your identification has been saved in /root/.ssh/idrsa. Your public key has been saved in /root/.ssh/idrsa.pub. The key fingerprint is: 2f:33:f6:f7:3f:13:4c:1f:04:9а:18:fa:0d:b2:а4:35 root@Ubuntu-1004-lucid-64-minima Последние 4-ре строки описывают расположение ключей и рассказывают о нашем fingerprint’e.

Это последовательность символов, используемая для аутентификации или поиска более длинного ключа. Сам ключ готов и сохранен в директории /.ssh/. Его графическое отображение выглядит так: 4. После того, как ключ готов, необходимо сделать его копию в новый файл. Для этого выполним команду: at idrsa.pub authorizedkeys Вместо «authorizedkeys» можно ввести любое другое имя файла. Просто в конфигах SSH уже есть закомментированная строчка с указанием именно этого названия.

Теперь необходимо выставить правильные права доступа: chmod -R 600. #чтение и запись только для владельца chmod 700 /.ssh/ #чтение, запись и исполнение только для владельца 6. С помощью WinSCP нужно стянуть файлик idrsa (не оставляя копии на сервере) к себе на компьютер. Теперь нам пригодятся остальные программы. Нам нужно преобразовать этот ключ в ключ, который понимает PuTTY и WinSCP. Для этого берем ранее скачанную программу PuTTYgen. В пункте меню «Conversions» выбираем «Import key».

Putty Это

Далее указываем путь к слитому в 6-м пункте файлику. PuTTYgen спросит нас про пароль (если указывали — укажите и сейчас). И сохраняем новый ключ, нажав на кнопку «Save private key» 8. Теперь нужно поправить конфиги SSH на сервере. Для этого нужно открыть файл /etc/ssh/ sshdconfig. Я советую для этого использовать Midnight Commander (в Ubuntu устанавливается apt-get install mc. Открывается просто mc).

Идем по указанному адресу, открываем на редактирование конфиг и ищем там следующие строки: PermitRootLogin yes (Если будете заходить на сервер под учетной записью root) RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile.ssh/authorizedkeys PermitEmptyPasswords no PasswordAuthentication no UsePAM no Значения должны быть такими, как сказано выше. После сохранения отредактированного конфига нужно перезапустить службу SSH (если не уверены в своих действиях, вспомните примету:»Перезапуск SSH — к поездкам»:) ). Для этого выполняем команду: service ssh restart 10. Теперь открываем Pageant и добавляем созданный на шаге 7 ключ.ppk. PROFIT!!!1 Теперь, если все было сделано правильно, PuTTY или WinSCP не будут требовать пароль. В дальнейшем не забывайте подгружать Pageant с ключом RSA.

Ssh Что Это

И не забудьте сохранить сам ключ в надежном месте:) P.S. Если статья была вам полезна, не поленитесь, оставьте, пожалуйста, коммент:) Спасибо.