Установка ssh Ubuntu 16.04
Довольно часто может понадобиться получить доступ к удаленному компьютеру или серверу через интернет. В случае с персональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика. В Linux наиболее часто для решения таких задач используется протокол ssh.
Служба ssh позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка ssh Ubuntu 16.04, а также поговорим о начальной настройке ssh сервера.
Что такое SSH?
SSH или Secure Shell — это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.
За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.
Установка OpenSSH в Ubuntu
Установить ssh на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве ее нет, но зато она есть в официальных репозиториях.
Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:
sudo apt install openssh-server
Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить ssh Ubuntu 16.04 выполните:
sudo systemctl enable sshd
Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:sudo systemctl disable sshd
Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:
ssh localhost
В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:
ssh 0.0.0.0
Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:
$ ssh имя_пользователя@ip_адрес
Настройка SSH в Ubuntu
С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.
Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
Дальше вы можете перейти к настройке конфигурационного файла:
sudo vi /etc/ssh/sshd_config
Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:
По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:
Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.
После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу ssd:
sudo systemctl restart ssh
Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.
Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:ssh -p 2222 localhost
К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:
sudo ufw allow 2222
Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:
sudo ufw allow 22
Настройка ssh Ubuntu 16.04 полностью завершена.
Выводы
Как пользоваться протоколом SSH в Ubuntu: установка и настройка
Возможностей организовать удалённый доступ к вашему компьютеру через интернет-соединение существует в большом количестве.
Некоторые из них являются очень сложными и используются лишь специалистами в профессиональной среде, в то время как другие — очень простые и их могут освоить даже неопытные пользователи.
Мы уже писали о нескольких способах, в частности, о программе TeamViewer и протоколе VNC.
Нюансы работы с протоколом SSH в Ubuntu.
В этой статье мы поговорим о протоколе безопасного подключения SSH, в последнее время ставшего практически стандартом в среде пользователей Linux.
Он является очень надёжным, поскольку поддерживает шифрование, а также его очень легко настраивать. Мы рассмотрим особенности протокола SSH, а также научимся выполнять настройки сервера и клиента.
Всё, что от вас будет требоваться — наличие компьютера с установленной операционной системой Ubuntu и интернет-подключение.
Что представляет собой протокол SSH
Протокол Secure Shell, известный также как SSH — специальный протокол для безопасного удалённого доступа к компьютеру через сетевое подключение.
Протокол имеет много возможностей, в том числе организацию защищённого подключения, запуск командной строки терминала на компьютере, к которому вы подключаетесь удалённо, запуск приложений с графическим интерфейсом, передача файлов и развёртывание приватных сетей.
Существует множество утилит, отвечающих за управлением протоколом. На операционной системе Ubuntu самым известным является Open SSH.
Это полностью свободный продукт с открытой лицензией и полным набором самых необходимых функций.
Клиент для управления SSH-подключением уже включён в дистрибутив Ubuntu, вам нужно будет лишь установить и настроить серверные компоненты. Управление осуществляется через команды в терминале.
Установка SSH в Ubuntu
Поскольку протокол SSH клиент для его управления является общепринятым стандартом, установить его можно при помощи короткой команды в терминале Ubuntu. для этого запустите сам терминал, нажав комбинацию кнопок на клавиатуре Ctrl + Alt + T, после чего примените команду sudo apt-get install ssh. После подготовки к скачиванию утилита запросит, хотите ли вы продолжить.
переключите клавиатуру на русский язык и нажмите Д. На вашем компьютере с Ubuntu установка ssh будет завершена уже через пару секунд. Если вы желаете активировать автоматический запуск при включении системы, используйте для этого команду sudo systemctl enable sshd.
соответственно, если потом вы пожелаете убрать службу из автоматического запуска, вам понадобится команда sudo systemctl disable sshd.
Теперь можно проверить, как всё работает. Этого достаточно попробовать подключиться к локальному SSH server: ssh localhost. Утилита обязательно запросит пароль суперпользователя, а также предложит добавить введённый адрес в список разрешённых. Если у вас всё работает, как положено, вы увидите небольшое сообщение, заканчивающиеся уведомление о дате последнего подключения к адресу.
Теперь можно подключаться к любому компьютеру в сети, если вы знаете его IP-адрес и имя пользователя. для этого в терминале вам нужно ввести команду следующего формата:
ssh имя_пользователя@ip_адрес
Например, если вы хотите подсоединиться к компьютеру Васи Пупкина с адресом 132.14.25.10, то команда будет выглядеть следующим образом:
ssh vasya_pupkin@132.14.25.10
Что можно поменять в настройках SSH
- Порт. По умолчанию утилита использует порт 22. Если его не изменить на другой, злоумышленник очень легко сможет получить доступ к вашей системе. Чтобы поменять номер порта, найдите строчку Port 22, и замените 22 на любой другой номер.
- Протокол. Утилита SSH поддерживает два протокола для лучшей совместимости. Тем не менее, протокол 1 уже считается устаревшим и небезопасным, поэтому лучше всего пользоваться протоколом 2. Чтобы активировать его, найдите строчку #Protocol 2, удалите знак # в начале строки. В некоторых случаях может встречаться запись типа Protocol 1, 2. В таком случае вам нужно оставить только последнее значение.
- Автоматический вход суперпользователя. Непонятно зачем, но по умолчанию эта функция активирована. Если её не отключить, то это может серьёзно повредить вашей безопасности. Найдите в конфигурационном файле строку PermitRootLogin и замените значение prohibit-password на no.
- Авторизация по ключу. Подключение по ключу является наиболее надёжным, так как его практически невозможно взломать. Вам нужно найти строку PubkeyAuthentication и проверить, не отличается ли значение этого параметра от необходимого yes. Как создавать сам ключ, мы расскажем в следующем пункте.
- Доступ определённой группы пользователей. Если вы хотите, чтобы доступ к удалённому компьютеру могла получить определённая группа пользователей, а не кто попало, в конце добавьте несколько строк типа: AllowUsers User1, User2, User3 либо AllowGroups Group1, Group2, Group3, если дело касается групп. Вместо User и Group пропишите конкретные названия.
- Разрешение запуска графического интерфейса приложений. Чтобы в дальнейшем запускать приложения с графическим интерфейсом на удалённом компьютере, вместо того чтобы довольствоваться командной строкой, в конфигурационном файле добавьте строчку, прописав X11Forwarding yes.
Минимально необходимые команды
- Разрешение использования порта в брандмауэре. Если вы пользуетесь на своём компьютере с операционной системой Ubuntu брандмауэром для контроля соединений, примените команду, разрешающую использование интернет-подключения утилитой SSH: sudo ufw allow 2222. Вместо 2222 пропишите номер порта, который использовали лично вы.
- Подключение к серверу. Немного выше мы уже писали, как можно подключаться к удалённому компьютеру, но не помешает напомнить. Введите команду вида ssh имя_пользователя@ip_адрес, где в первом параметре напишите логин для подсоединения к компьютеру, а во втором — его адрес в сети.
- Выполнение удалённых команд. Допустим, вам нужно удалённо выполнить какую-либо команду на компьютере, к которому вы подключаетесь. Для этого к команде для подключения к компьютеру, указанной в предыдущем пункте, добавьте команда, которую нужно исполнить. например, вернёмся, к примеру, с Васей Пупкиным: ssh vasya_pupkin@132.14.25.10 ls. На удалённом компьютере будет выполнена команда ls.
- Аутентификация на сервере с применением ключа. Поскольку пароль очень легко подобрать, наиболее надёжным и безопасным способом подключения к удалённому компьютеру через сеть будет с использованием специального ключа. Чтобы создать его, воспользуйтесь командой ssh-keygen -t rsa. Ответьте на все вопросы, которые у вас спросит утилита настройки. Затем отправьте созданный ключ на удалённый сервер: ssh-copy-id -i ~/.ssh/id_rsa.pub имя_пользователя@адрес_компьютера. Теперь, когда вы будете подключаться к этой удалённой машине, пароль запрашивается не будет, а будет использоваться персональный ключ.
- Передача файлов. Иногда необходимо передать какие-то файлы или документы на удалённый компьютер. Для этого вам понадобится следующая команда: scp /расположение/файла имя_пользователя@адрес_компьютера: расположение/папки. Вот конкретный образец на основе примера с Васей Пупкиным): scp /home/text.pdf vasya_pupkin@132.14.25.10:home/documents. Чтобы использовать сжатие файлов и пересылать целые папки, поможет команда tar czf — /home/user/file | ssh имя_пользователя@адрес_компьютера tar -xvzf -C /home/папка_пользователя/.
- Запуск графического интерфейса программ на удалённом компьютере. К примеру, вы работаете из дому, но необходимое программное обеспечение установлено на вашем рабочем компьютере. Его можно запустить удалённо, а на вашем домашнем ПК будет отображаться лишь интерфейс программы, тогда как все вычисления и обработка данных будет происходить на рабочей машине. Если вы уже ранее активировали возможность запуска графического интерфейса программ, воспользуйтесь вот такой командой: ssh -XC имя_пользователя@адрес_компьютера «название_программы».
Заключение
Как пользоваться SSH? А также установка и настройка (Linux, Windows, macOS, Android, iOS)
В этой статье расскажем вам как установить SSH в Linux, Windows и Mac, как настроить и как пользоваться! Все до мелочей! Будет интересно!
SSH — это популярный протокол для удаленного управления (администрирования) операционных систем на ядре Linux, Unix. Для новичков Linux не совсем понятно установка данного протокола, настройка и использование, чтобы это исправить было решено написать данную статью!
Одной из самых популярных операционных систем работающих на ядре Linux является Ubuntu, поэтому объяснять о ssh будем именно на ней.
Сначала все действия мы объясним на примере с Linux, а после и в Mac и Windows!
Установка SSH в ОС Linux
В 99,99% случаях в Linux уже установлен ssh клиент, с помощью которого можно подключиться к удаленной машине. Но если вы хотите чтобы подключились к компьютеру за которым вы сейчас находитесь или на любой другой, необходимо «скачать ssh сервер».
Сделать это очень просто, все необходимое уже есть в репозиториях (а-ля магазин программ), откройте терминал и введите команду:
sudo apt install openssh-server
То есть, необходима серверная часть, которая делает компьютер доступным в сети по протоколу ssh. Есть клиентская часть, которая уже установлена на ваш компьютер, и с помощью ее, вы подключаетесь к удаленному компьютеру.
Подключение по SSH (с паролем)
Откройте терминал и введите команду для подключения к удаленной машине:
ssh ИмяПользователя@IPадрес
Вначале пишем ssh, потом имя пользователя который есть на удаленной машине, далее знак @ (собачка) и IP адрес. Вот например:
ssh sasha@100.08.30.48
Как правило, ssh подключение происходит к порту 22, если вы его принудительно изменили, то нужно его указать. Для этого в конце пишем -p номер. Вот пример:
ssh sasha@100.08.30.48 -p 3040
После того как вы подключились и если это было первое подключение к машине, вам необходимо будет, добавить машину в доверенные — напишите yes и нажмите Enter. Выполняется это один раз.
Далее необходимо написать пароль пользователя. Его необходимо будет указывать каждый раз!
Создание SSH-ключа и подключение без пароля!
Для того чтобы не запоминать пароль и каждый раз его не вводить, особенно если у вас множество Linux серверов можно создать специальный SSH-ключ. Этот ключ позволит подключаться с уже «известной» машины с «известным» сервером, без использования пароля.
Как создать ключ SSH?
На компьютере за которым вы сейчас находитесь создаем ключ, а после, его необходимо будет скопировать на наш сервер!
Создаем ключ за текущим компьютером:
ssh-keygen -t rsa
После чего будет задан вопрос, где сохранить ключ, по умолчанию это ваша домашняя директория, скрытая папка ./ssh. В большинстве случаев можно просто нажать Enter, чтобы пропустить.
Далее вам предложат создать кодовое слово, также жмем Enter, чтобы пропустить!
Ключ создан, теперь его необходимо добавить на удаленную машину или сервер.
Как добавить SSH-ключ на сервер?
Для этого вводим команду:
ssh-copy-id ИмяПользователя@IPадрес
Пишем команду ssh-copy-id, далее имя пользователя, который существует на удаленной машине, символ @ (собачка) и IP адрес. Вот например:
ssh-copy-id sasha@100.08.30.48
Далее указываем пароль пользователя, который есть на удаленной машине или сервере, после чего ключ будет скопирован.
Теперь у вас есть возможность подключаться к серверу или другой машине без использования ключа, просто введя имя пользователя и пароль!
Клиент SSH Windows
Одной из самых популярных программ для работы c Linux серверами по SSH в Windows является программа Putty. Скачать данный SSH клиент Windows можно по данному адресу — putty.org.
Подключение по SSH по паролю в Windows
Подключение в Putty по SSH очень простое! Вводим IP адрес, если меняли порт, то указываем другой порт и нажимаем Open:и после подключения логин и пароль!
Если вам не хочется вводить каждый раз пароль, а использовать ключ ssh в Putty, то, как и в Linux, сначала необходимо создать ключ, а после перенести его на сервер.
Создаем ключ
- Скачайте еще одну программу PuttyGen и запустите ее
- Нажмите кнопку «Generate» и вводите мышку по сторонам, для того чтобы создался ключ
- После создания ключа нажимаем «Save Privat Key» и указываем место сохранения, сохраняем с расширением .ppk
- Копируем весь ключ в буфер обмена с самой первой строки ssh-rsa:
Программу пока не закрываем и запускаем Putty для подключения
Перенос ключа
- Сохраняем наш Linux сервер в сессиях следующим образом:
- Указываем ИмяПользователя@IPадрес
- чуть ниже название подключения
- Подключаемся к серверу
- Переходим в директорию ./ssh: cd ~/.ssh/
- Далее с помощью редактора nano откройте документ authorized_keys для редактирования nano authorized_keys
и добавьте ранее сгенерированный ключ в данный файл и сохраните данные
- Закройте Putty SSH
- Откройте Putty, нажмите кнопку «Load»
- Далее в настройках SSH -> Auth укажите путь до файла ключа.ppk
- Нажмите Open, после чего запустится сеанс на сервере без использования ключа!
Mac SSH Client
Так как macOS основана на UNIX системе, то подключатся по ssh можно прямо из терминала!
Если есть желание не использовать пароль, то необходимо вначале установить Homebrew:
/usr/bin/ruby -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»
и далее все как в Linux.
Есть также удобный mac ssh client — Termius.
SSH клиент android и iOS
Наиболее удобным клиентом SSH для iOS и Android является приложение Termius!
Для Android:
Для iOS:
Передача и скачивание файлов по SSH (SCP)
Для того чтобы закачать файл с локальной машины на сервер по ssh в Linux и macOS:
scp file1.tar root@ip_adress:/home/dir
Копирование файла с сервера на локальный компьютер Linux или macOS:
scp userName@ip_adress:/home/file1.tar /var/www/
C сервера, на сервер:
scp user@server_ip1:/home/file.txt user@server_ip2:/home/
Для Windows
Для перемещения файлов по SSH в Windows используется pscp.
pscp.exe file.zip root@ip_server:/var/www/
Настройка SSH
Если необходимо добавить вход в SSH сразу по root:
- Как настроить вход по Root в SSH
Смена порта SSH
Так как по умолчанию работа ssh настроена на порту 22, то пользоваться сервером становится не безопасно. Поэтому стоит сменить порт!
С помощью nano отредактируйте документ sshd_config, введите команду:
sudo nano /etc/ssh/sshd_config
и поменяйте значения Port на необходимые:
# What ports, IPs and protocols we listen for Port 22
Вход только по ключу SSH:
С помощью nano отредактируйте документ sshd_config, введите команду:
sudo nano /etc/ssh/sshd_config
Поменяйте значения PasswordAuthentication с yes на no:
Ubuntu SSH — установка и настройка
Порой появляется потребность зайти с одного ПК на другой, при этом чтобы можно было не только просматривать данные, но и совершать какие-то действия. Для таких задач идеально подходит протокол SSH, особенно в Ubuntu. Он позволяет безопасно объединить сервер и клиент и при этом установка и настройка не займет у вас много времени, если действовать по инструкции.
Как установить server в Ubuntu
Дело в том, что по умолчанию в операционной системе Ubuntu клиент уже установлен. Потому главное — это установка программы server OpenSSH на компьютере и ее последующая настройка. Для того, чтобы установить сервер, откройте терминал и введите строку: sudo apt-get install openssh-server.
После этого Ubuntu запросит у вас пароль — подтвердите его. Когда установка будет завершена, вылетит сообщение с отчетом об успешной инсталляции. В итоге будет установлен server OpenSSH.
Эта программа находится в дистрибутивах Ubuntu по умолчанию, потому server OpenSSH пользуется большой популярностью среди юзеров данной ОС.
Настройка server SSH в Ubuntu
Теперь самое главное — вам нужно правильно настроить server OpenSSH перед тем, как включить его и пускать клиент по защищенному протоколу на хост. Неправильная настройка может привести к понижению уровня безопасности и ваш сервер могут взломать.
А SSH протокол для того и нужен, чтобы подключение и передача данных проходили по надежным, шифрованным каналам, так что лучше потратьте немного времени и разберитесь в настройках.
То, как будет работать сервер, прописано в файле конфигураций config. В частности, в нем прописаны требования, каким должен соответствовать клиент для прохода через защиту SSH.
Для начала стоит определиться с пользователем, через которого вы будете управлять системой. По умолчанию установлен пользователь root.
Но оставлять эту настройку таковой небезопасно — у root пользователя слишком много прав и вы случайно можете навредить системе, потому лучше запретить его подключение к серверу.Вам нужно переустановить на сервер другой аккаунт пользователя, чтобы вы могли безопасно пользоваться другим компьютером через SSH. Для этого вам нужно будет вместо root добавить другого юзера при помощи командной строки: adduser имя_пользователя.
Но и этого недостаточно — все-таки иногда вам нужен будет пользователь root. Тогда сделайте добавленного юзера наполовину суперадминистратором, чтобы он мог временно получать root права. Для этого зайдите в root и пропишите следующую строку: gpasswd -a имя_пользователя sudo.
Таким образом вы добавите нового юзера в группу пользователей sudo, у которых наибольший уровень доступа.
Если вы планируете при помощи SSH создать публичный сервер и на компьютер будет заходить ни один клиент, тогда лучше вообще убрать root пользователя.
Если же вы уверены в своих способностях и не планируете публиковать хост, тогда можете сделать клиент суперадминистратором и защитить его паролем. Но иногда после этого появляется сообщение об ошибке: access denied.
Надпись access denied после попытки зайти в аккаунт суперпользователя при помощи ввода пароля может означать какое-то противоречие в файле конфигураций config.
Чтобы устранить access denied, вам стоит хорошенько просмотреть все ли в порядке в настройках.
Самая частая причина, почему появляется access denied — это активация опции авторизации по паролю и для обычных пользователей, и для root. Чтобы убрать access denied, поменяйте PermitRootLogin вместо yes на without-password.А затем пропишите PermitRootLogin yes. Далее перезапустите сервер (service ssh restart) и сообщение access denied окончательно пропадет.
Следующий важный шаг — это активация усиленной аутентификации пользователей. Авторизация путем ввода пароля — это уже устарелый и неэффективный способ защиты аккаунтов.
Сейчас есть множество программ, при помощи которых можно путем подбора взломать пароли. Потому вам лучше использовать аутентификацию при помощи публичного ключа.
То есть вам лучше использовать Public Key Authentication и поставить yes возле этого пункта в файле config.
Чтобы войти на сервер путем подтверждения публичного ключа, вам нужно его сначала сгенерировать. В Ubuntu очень удобно генерировать ключи, так как для этого не нужно скачивать какие-то дополнительные программы — достаточно забить в терминале ssh-keygen.
После этого появится сообщение с информацией о расположении созданного ключа. Он будет находится в папке .ssh.
После этого система запросит у вас пароль, но настоятельно рекомендуется оставить его пустым — иначе потом будете вводить его каждый раз при осуществлении какой-либо операции.
Следующим шагом вам нужно добавить сгенерированный публичный ключ в список доверенных на сервере. Для начала вам нужно будет скопировать публичный ключ. Он находится в файле формата .pub в папке .ssh. Скопируйте его и зайдите на сервер. На сервере так же должна быть папка .ssh.Если ее нет, то придется создать самостоятельно. А после этого, используя стандартный текстовый редактор, создайте файл authorized_keys. Именно в него вам нужно будет поместить публичный ключ. После этого вы сможете заходить на сервер без какого-либо подтверждения.
Аутентификация будет проходить в автоматическом, фоновом режиме, что весьма удобно и при этом безопасно.
В целом, на этом настройка протокола SSH заканчивается! Разве что еще можете изменить порт 22 на другой.
Как настроить ключи SSH в Ubuntu 18.04 | DigitalOcean
SSH (secure shell, безопасная оболочка) представляет собой шифрованный протокол для администрирования и взаимодействия между серверами. Во время работы с сервером Ubuntu вы, скорее всего, будете проводить большую часть времени в вашем терминале, подключенном через SSH к вашему серверу.
В этом руководстве мы рассмотрим процесс настройки ключей SSH на вновь установленной Ubuntu. Ключи SSH представляют собой простой и безопасный способ входа на ваш сервер, и являются рекомендованным способом входа для всех пользователей.
Шаг 1 — Создание пары ключей RSA
Сперва создадим пару ключей на клиентской машине (обычно, это ваш компьютер):
По умолчанию ssh-keygen создаёт 2048-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг -b 4096 для получения 4096-битный ключей).
После ввода этой команды вы должны увидеть следующий вывод:
ВыводGenerating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):
Нажмите Enter для сохранения пары ключей в директорию .ssh/ внутри вашей домашней директории или задайте другую директорию.
Если ранее вы уже генерировали пару SSH ключей, вы можете увидеть следующий вывод:
Вывод/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?
Если вы выберете перезаписать ключи на диск, вы не сможете использовать старые ключи для аутентификации. Будьте очень осторожны при выборе yes, это решение нельзя будет отменить.
Вы должны увидеть следующий вывод:
ВыводEnter passphrase (empty for no passphrase):
Здесь вы можете задать ключевую фразу (passphrase), что обычно рекомендуется сделать. Ключевая фраза добавляет дополнительный уровень безопасности для предотвращения входа на сервер неавторизованных пользователей. Для того, чтобы узнать больше о том, как это работает, рекомендуем ознакомиться с нашим руководством по настройке аутентификации по ключам SSH на серверах Linux.
Вы должны увидеть следующий вывод:
ВыводOutputYour identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_hostThe key's randomart image is:+—[ RSA 2048]—-+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+——————+
Теперь у вас есть пара из публичного и секретного ключей, которые вы можете использовать для аутентификации. Далее мы поместим публичный ключ на ваш сервер, для того, чтобы вы могли использовать аутентификацию по ключам SSH для входа.
Шаг 2 — Копирование публичного ключа на сервер Ubuntu
Самым быстрым способом скопировать ваш публичный ключ на машину с Ubuntu — использовать утилиту ssh-copy-id. Поскольку этот метод невероятно прост, он рекомендуется для использования в первую очередь.
Если по какой либо причине использование ssh-copy-id невозможно, вы можете использовать один из двух альтернативных методов, описанных далее (копирование в входом по SSH с использованием пароля и ручное копирование ключа).
Копирование ключа с использованием ssh-copy-id
Утилита ssh-copy-id доступна по умолчанию во многих операционных системах, поэтому, скорее всего, она доступна и на вашей локальной машине. Для использования этого метода копирования ключа вам необходимо иметь доступ к своему серверу по SSH с использованием пароля.
Для использования утилиты вам необходимо указать адрес удалённого хоста, к которому вы хотите подключиться, а также имя пользователя, имеющего доступ к хосту по SSH. Именно для аккаунта этого пользователя и будет скопирован ваш публичный ключ SSH.
Синтаксис команды выглядит следующим образом:
- ssh-copy-id username@remote_host
Вы можете увидеть вывод следующего вида:
ВыводThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Это означает, что ваш локальный компьютер не узнал удалённый хост. Это случается, когда вы пытаетесь подключиться к новому хосту в первый раз. Напечатайте «yes» и нажмите ENTER для продолжения.
Далее утилита будет искать в директории вашего локального пользователя файл ключа id_rsa.pub, созданный нами ранее. Если файл ключа будет успешно обнаружен, утилита запросит пароль для входа на удалённый хост:
Вывод/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keysusername@203.0.113.1's password:
Введите пароль (при вводе он не будет отображаться из соображений безопасности) и нажмите ENTER. Утилита зайдёт на удалённый хост, используя данные аккаунта, пароль для которого вы ввели. Далее утилита скопирует содержимое файла публичного ключа из ~/.ssh/id_rsa.pub в файл authorized_keys в поддиректории ~/.ssh домашней директории вашего пользователя на удалённом хосте.
Вы должны увидеть следующий вывод:
ВыводNumber of key(s) added: 1 Now try logging into the machine, with: «ssh 'username@203.0.113.1'»and check to make sure that only the key(s) you wanted were added.
Теперь ваш публичный ключ id_rsa.pub загружен на удалённый хост. Вы можете перейти к Шагу 3.
Копирование публичного ключа через SSH
Если у вас нет утилиты ssh-copy-id, но у вас есть пароль для входа по SSH на ваш удалённый сервер, мы можете загрузить свой ключ вручную.
Для этого можно использовать команду cat, которая прочитает содержимое файла публичного ключа на локальной машине, а затем мы сможем отправить прочитанные данные ключа по SSH на удалённый сервер.
Кроме этого, нам потребуется убедиться, что директория ~/.ssh существует, а также имеет корректные права доступа для используемого нами аккаунта пользователя.
Далее мы сможем отправить содержимое файла ключа в файл authorized_keys внутри этой директории. Мы будем использовать синтаксис >> для добавление данных в конец файла вместо перезаписи содержимого файла. Это позволит нам добавить ключ без удаления ранее добавленных ключей.
Команда выглядит следующим образом:
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host «mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys»
Вы можете увидеть вывод следующего вида:
ВыводThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Это означает, что ваш локальный компьютер не узнал удалённый хост. Это случается, когда вы пытаетесь подключиться к новому хосту в первый раз. Напечатайте «yes» и нажмите ENTER для продолжения.
Далее вам будет предложено ввести пароль аккаунта пользователя на удалённом хосте:
Выводusername@203.0.113.1's password:
После ввода пароля содержимое вашего файла публичного ключа id_rsa.pub будет скопировано в конец файла authorized_keys на удалённом хосте. Если всё прошло успешно, вы можете перейти к Шагу 3.
Копирование публичного ключа вручную
Если у вас нет доступа к вашей удалённой машине по SSH с использованием пароля, вам придётся проделать описанный выше процесс вручную.
Мы вручную добавим содержимое вашего файла id_rsa.pub в конец файла ~/.ssh/authorized_keys на удалённой машине.
Для отображения содержимого файла id_rsa.pub введите следующую команду на вашей локальной машине:
Вы увидите содержимое файла ключа, выглядящее примерно так:
Выводssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+z5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test
Зайдите на вашу удалённую машину любым доступным для вас способом.
Далее нам необходимо убедиться, что директория ~/.ssh существует. Следующая команда создаст директорию, если её не существует или не сделает ничего, если директория была создана ранее:Теперь вы можете создать или отредактировать файл authorized_keys внутри этой директории. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys, при необходимости создав его, следующей командой:
- echo строка_публичного_ключа >> ~/.ssh/authorized_keys
В команде выше замените строка_публичного_ключа на вывод команды cat ~/.ssh/id_rsa.pub, которую вы выполнили на своей локальной машине. Строка должна начинаться с ssh-rsa AAAA….
Далее убедимся, что директория ~/.ssh и файл authorized_keys имеют подходящие права доступа:
Эта команда удаляет права доступа для «group» и «other» для директории ~/.ssh/.
Если вы используете аккаунт root для настройки ключей для аккаунта пользователя, важно, чтобы директория ~/.ssh принадлежала этому самому пользователю, а не пользователю root:
- chown -R sammy:sammy ~/.ssh
В нашем руководстве мы используем пользователя с именем sammy, вам же следует использовать имя своего пользователя в команде выше.
Теперь мы можем попробовать аутентифицироваться на нашем Ubuntu сервере без пароля.
Шаг 3 — Аутентификация на сервере Ubuntu с использованием ключей SSH
Если вы успешно проделали описанные выше шаги по переносу публичного ключа, вы должны быть способны зайти на свой удалённый хост без использования пароля.
Процесс входа выглядит так же:
Если вы заходите на удалённый хост по SSH в первый раз, вы можете увидеть вывод следующего вида:
ВыводThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Это означает, что ваш локальный компьютер не узнал удалённый хост. Напечатайте «yes» и нажмите ENTER для продолжения.
Если при создании пары ключей вы не задали ключевую фразу (passphrase), вы будете залогинены автоматически.
Если вы задали ключевую фразу, вам будет предложено её ввести (обратите внимание, что вводимые символы не будут отображаться на экране в целях безопасности).
После аутентификации откроется новая сессия оболочки (shell session) на удалённом хосте от имени используемого вами удалённого аккаунта пользователя.
Если аутентификация по ключу прошла успешно, рекомендуем ознакомиться с тем, как далее повысить безопасность вашего сервера путём отключения входа по паролю.
Шаг 4 — Отключение аутентификации по паролю на вашем сервере
Если вам удалось войти в ваш удалённый аккаунт на удалённом хосте по SSH без ввода пароля, вы успешно настроили аутентификацию по ключу SSH для вашего аккаунта. Однако возможность входить на сервер с использованием пароля всё есть активна, что означает, что ваш сервер уязвим для атак с перебором пароля (brute-force attacks).
Перед тем как следовать дальнейшим инструкциям, убедитесь, что вы настроили аутентификацию по ключу SSH для вашего пользователя root или для пользователя с привилегиями sudo на вашем сервере. После завершения описанных далее процедур вход по паролю станет недоступен, поэтому очень важно убедиться, что у вас остаётся доступ к вашему серверу.
Как только вы убедитесь, что аккаунт вашего удалённого пользователя имеет привилегии администратора, войдите на сервер с использованием аутентификации по ключу SSH, используя либо аккаунт root, либо аккаунт пользователя с привилегиями sudo. Далее откройте конфигурационный файл демона SSH:
- sudo nano /etc/ssh/sshd_config
Внутри файла найдите директиву PasswordAuthentication. Она может быть закомментирована. Раскомментируйте её при необходимости и установите её значение в «no». Это отключит возможность входа на сервер по паролю.
/etc/ssh/sshd_config
…PasswordAuthentication no…
Сохраните и закройте файл нажав CTRL + X, затем Y для подтверждения сохранения файла, а далее ENTER для выхода из текстового редактора nano. Для применения внесённых изменений нам необходимо перезапустить сервис sshd:
- sudo systemctl restart ssh
В качестве меры предосторожности откройте новое окно терминала и проверьте, что соединение по SSH работает корректно, перед тем, как закрывать текущую сессию:
После проверки работоспособности SSH соединения, вы можете закрыть все открытые сессии с сервером.
Теперь демон SSH на вашем сервере с Ubuntu работает только с ключами SSH. Аутентификация по паролю полностью отключена.