Ssh как не вводить пароль
Перейти к содержимому

Ssh как не вводить пароль

  • автор:

Как настроить вход в SSH без пароля

Ключи SSH обеспечивают более безопасный способ доступа к выделенному серверу с SSH, нежели с помощью пароля напрямую. В то время как пароль, в конечном счете, может быть взломан путем подбора, ключи SSH почти невозможно расшифровать с помощью перебора (bruteforce) в одиночку. Создание Ключевой Пары предоставляет вам две длинные строки символов: публичный и приватный ключи. Вы можете разместить публичный ключ на любом сервере, а затем разблокировать сервер, подключившись к нему с клиента, который уже имеет закрытый приватный ключ. Когда оба ключа совпадают, система разблокирует доступ без необходимости ввода пароля. Вы можете повысить безопасность еще больше, защищая закрытый ключ кодовой фразой.

Шаг первый — Создание RSA пары ключей.

Первым шагом является создание пары ключей на клиентской машине (будет просто замечательно, если это будет ваш компьютер):

Шаг второй — Сохранение ключа и кодовой фразы

После того, как вы ввели команду Gen Key, вы получите еще несколько запросов:

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Если вам удобно, нажмите клавишу ввода и , сохраните файл на своем личном компьютере (в данном случае, мой пример — пользователь называется «демо»).

Только от вас зависит, хотите ли вы использовать кодовую фразу. Ввод фразы имеет свои преимущества: безопасность ключа, независимо от того, как он зашифрован, а так же её невидимость для других пользователей, что немаловажно. Если объект защищен парольной фразой, то несанкционированным пользователям просто невозможно подключиться к процессу. Они не смогут войти в процесс не зная этой кодовой фразы, и в данной ситуации, даже покупка взломанных кодов и пользователей не решает проблему. Единственный недостаток при использовании кодовой фразы — ее придется вводить каждый раз, при использовании Ключевой Пары.

Весь процесс генерации ключа выглядит так:

Generating public/private rsa key pair.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/demo/.ssh/id_rsa.

Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

The key fingerprint is:

The key’s randomart image is:

+--[ RSA 2048]----+ | .oo. | | . o.E | | + . o | | . = = . | | = S = . | | o + = + | | . o + o . | | . o | | | +-----------------+

Открытый ключ в настоящее время находится в /home/demo/.ssh/id_rsa.pub . закрытый ключ (идентификация) в настоящее время находится в /home/demo/.ssh/id_rsa

Шаг третий — копирование Публичного Ключа.

После того, как ключевая пара сгенерирована, пора поставить открытый ключ на сервере, который мы будем использовать.

Вы можете скопировать открытый ключ в authorized_keys машины с помощью команды ssh-copy-id. Не забудьте заменить имя пользователя и IP-адрес из примера ниже, на нужные вам.

Либо вы можете вставить в ключи с использованием SSH:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 «mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys»

Независимо от того, какой метод вы выбрали, вы должны увидеть что-то вроде:

The authenticity of host ‘12.34.56.78 (12.34.56.78)’ can’t be established.

RSA key fingerprint is b1:7d:13:57:2e:31:4d:5e:c3:a8:a3:c0:c4:48:86:12.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘12.34.56.78’ (RSA) to the list of known hosts.

Теперь поопробуйте залогиниться с помощью:

Это необходимо для того, чтобы убедиться что мы не создали лишние ключи.

Теперь вы можете авторизоваться как user@12.34.56.78 и не увидите предложения ввода пароля. Однако, если вы установите парольную фразу, вам будет предложено ввести ключевую фразу на тот момент (и всякий раз, когда вы захотите еще войти в будущем).

Дополнительный четвертый этап — отключить пароль для суперпользователя (администратора с root правами) в системе.

После того, как вы скопировали ключи SSH к вашему серверу и убедились, что вы можете войти с ключами SSH лично, вы можете пойти дальше и ограничить вход администратора, чтобы он допускался только с помощью ключей SSH.

Для того чтобы сделать это, откройте файл SSH конфигурации:

sudo nano /etc/ssh/sshd_config

в этом файле найдите строку, которая включает PermitRootLogin и измените её, чтобы разрешить пользователям подключаться только используя их SSH ключ

Убедитесь, что изменения вступили в силу:

reload ssh (либо service sshd restart)

Как настроить доступ по ssh используя id_rsa ключи

Как настроить доступ к серверу по ssh на базе секретных ключей? Чтобы можно было подключаться по ssh без ввода пароля.

короткая ссылка на этот вопрос: close
спросил 9 лет назад

1 ответ

Чтобы подключаться к серверу по ssh без ввода пароля, вы должны у себя иметь пару открытый (публичный) и закрытый (приватный) ключ.

А затем сообщить серверу ваш публичный ~/.ssh/id_rsa.pub ключ.

Если пара ключей для вашего пользователя еще не создана, то нужно прочитать как сгенерировать ключи. Иначе, если ключи созданы, сразу выполняем команду ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remotehost

  • user – пользователь, под которым вы подключаетесь на удалённую машину;
  • remotehost – ip-адрес удаленной машины.
  • -i — опция указывает путь к вашему публичному ключу, который мы хотим закинуть на удаленный сервер

Эта команда скопирует на удалённый сервер ваш публичный ключ и добавит его в файл ~/.ssh/authorized_keys . При желании файл ~/.ssh/authorized_keys на сервере можно создать вручную и скопировать в него содержимое вашего публичного ключа ~/.ssh/id_rsa.pub .

После этого вы можете проходить авторизацию на сервере по ssh-ключам без ввода пароля:

ssh-keys

Если после ssh-copy-id по-прежнему просит ввести пароль, то нужно проверить права на папке .ssh на сервере. На вашу домашнюю директорию не должны стоять права на запись для остальных пользователей. А на файл authorized_keys должны быть права 600.

Выполните следующие команды:

chmod g-w /home/youruser chmod 700 /home/youruser/.ssh chmod 600 /home/youruser/.ssh/authorized_keys

После этого вы можете без проблем подключаться по ssh без ввода пароля.

Может быть полезно:

  • Как добавить короткие алиасы на SSH подключение или использовать несколько пар ключей
  • Enter passphrase for key — Stop asking ssh key passphrase

Как настроить ssh доступ к серверу без пароля

По умолчанию, когда вы пытаетесь войти через SSH, вам приходится каждый раз вводить пароль вручную. В этой заметке я расскажу как настроить безопасный вход без пароля используя ssh-keygen и ssh-copy-id

Генерируем пару ключей

Для генерации ключей на вашем домашнем Mac (linux, ПК или что там у вас) используем ssh-keygen, который скорее всего у вас уже установлен.

Возможно эти ключи уже сгенерированы, проверьте содержимое ~/.ssh директории.

ssh-keygen -t rsa # Создаст пару ключей по пути ~/.ssh/(id_rsa|id_rsa.pub)

Директорию, в которую сохраняется файл можно изменить Enter the file in which you wish to save they key , если не меняем, просто жмем Enter

Далее видим: Enter a passphrase (leave empty for no passphrase).

Вам не обязательно вводить кодовую фразу, но это настоятельно рекомендуется, поскольку она защищает ваш закрытый ключ в случае взлома. Злому хакеру все равно понадобится ваша кодовая фраза, чтобы разблокировать ваш ключ.

Копируем, созданный публичный ключ на сервер

Для удобного копирования ключей на сервер мы будем использовать утилиту ssh-copy-id , скорее всего она тоже установлена на вашем устройстве, если вы используете Mac и homebrew, можно установить ее так:

brew install ssh-copy-id

Копируем публичный ключ (важно. копируем именно публичный ключ)

ssh-copy-id -i ~/.ssh/id_rsa.pub username>@server-ip>

Вместо и подставляем ваши значения. Терминал попросит вас ввести пароль, после чего перенесет ваш ключ на сервер и в последующие входы по ssh на этот сервер ввод пароля уже не потребуется!

Убедиться в этом можно так: ssh @ , если все шаги пройдены верно, после этой команды вы окажетесь на сервере!

Последний штрих — можно добавить alias для команды ssh @ чтобы не запоминать ip сервера, либо если у вас подключены автодополнения и вы используете только один сервер, этого может быть тоже достаточно. О том как настроить автодополнения в терминале на MacOS я писал тут — Как включить автодополнения в терминале на Mac OS

Вам также может быть интересно

Bytecode

Краткая выжимка из википедии Промежуточное представление кода, созданное автоматическими средствами — компактное представление программы…

Heap

Heap

Изображение взято отсюда Используется для динамического выделения памяти Куча гораздо медленнее чем стек, потому что программа ищет данные в…

Stack (стек)

Используется для статического выделения памяти Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху…

Stack frames

Каждый раз, когда вызывается функция, детали ее вызова кладутся на стек и каждый раз, когда функция завершает свое выполнение эта информация…

NodeJs флаги

Флаги ноды, связанные с памятью и сборкой мусора Как посмотреть все флаги ноды Или так Как использовать grep

V8 движок

Так как JS интерпретируемый язык, ему нужен движок, который будет интерпретировать и исполнять код. v8 Разработанный Google и написанный на…

Как включить автодополнения в терминале на Mac OS

Как включить автодополнения в терминале на Mac OS

Устанавливаем пакет через brew: Добавляем в конец файла следующее: Это можно сделать одной командой в терминале: Перезагружаем терминал…

Работа с prisma

В формате коротких заметок Дока или просто набрать в консоли Запустить админку/дашбод в котором можно посмотреть кол-во записей, структуру…

Хеш функция djb2

Хеш функция djb2

DJB2 — это простая некриптографическая хэш-функция, созданная Дэниелом Дж. Бернштейн (собственно отсюда и название функции — инициалы автора…

Как настроить SSH вход без пароля

img

SSH (Secure Shell) обеспечивает безопасное удаленное соединение между двумя системами. С помощью этого криптографического протокола вы можете управлять машинами, копировать или перемещать файлы на удаленном сервере через зашифрованные каналы.

Существует два способа входа в удаленную систему через SSH — с использованием аутентификации по паролю или аутентификации с открытым ключом (вход SSH без пароля).

В этом руководстве вы узнаете, как настроить и включить вход по SSH без пароля.

Как настроить SSH вход без пароля

Подготовка

  • Доступ к командной строке или окну терминала
  • Пользователь с привилегиями sudo или root
  • Локальный сервер и удаленный сервер
  • Доступ по SSH к удаленному серверу через командную строку или окно терминала

Перед тем как начать проверьте существующие ключи SSH. Возможно, на вашем компьютере уже есть пара ключей SSH. Чтобы узнать, есть ли у вас в системе ключи SSH, выполните команду:

ls -al ~/.ssh/id_*.pub

Если в выводе указано, что таких файлов нет, переходите к следующему шагу, который показывает, как сгенерировать ключи SSH. Если они у вас есть, вы можете использовать существующие ключи, сделать их резервную копию и создать новую пару или перезаписать ее.

Шаг 1. Создайте пару ключей SSH

1. Первое, что вам нужно сделать, это сгенерировать пару ключей SSH на машине, на которой вы сейчас работаете.

В этом примере мы генерируем 4096-битную пару ключей. Мы также добавляем адрес электронной почты, но это необязательно. Команда такая:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

2. Затем введите место, где вы хотите сохранить ключи, или нажмите Enter, чтобы принять путь по умолчанию.

3. Также вам будет предложено установить кодовую фразу. Хотя это делает соединение еще более безопасным, оно может прерываться при настройке автоматизированных процессов. Поэтому вы можете ввести пароль или просто нажать Enter, чтобы пропустить этот шаг.

Passphrase

4. Затем в выводе сообщается, где хранятся идентификационный и открытый ключ, а также выдается отпечаток ключа.

Fingerprint

5. Убедитесь, что вы успешно создали пару ключей SSH, выполнив команду:

ls -al ~/.ssh/id_*.pub

Вы должны увидеть путь идентификационного ключа и открытого ключа, как на скриншоте ниже:

Путь идентификационного ключа

Шаг 2. Загрузите открытый ключ на удаленный сервер

Вы можете загрузить публичный SSH-ключ на удаленный сервер с помощью команды ssh-copy-id или команды cat .

Вариант 1. Загрузить открытый ключ с помощью команды ssh-copy-id

Чтобы включить беспарольный доступ, вам необходимо загрузить копию открытого ключа на удаленный сервер.

1. Подключитесь к удаленному серверу и используйте команду ssh-copy-id :

ssh-copy-ide [remote_username]@[server_ip_address]

2. Открытый ключ автоматически копируется в файл .ssh/authorized_keys .

Вариант 2: загрузить открытый ключ с помощью команды cat

Другой способ скопировать открытый ключ на сервер — использовать команду cat .

1. Начните с подключения к серверу и создания на нем каталога .ssh .

ssh [remote_username]@[server_ip_address] mkdir -p .ssh

2. Затем введите пароль для удаленного пользователя.

3. Теперь вы можете загрузить открытый ключ с локальной машины на удаленный сервер. Команда также указывает, что ключ будет храниться под именем authorized_keys во вновь созданном каталоге .ssh :

cat .ssh/id_rsa.pub | ssh [remote_username]@[server_ip_address] 'cat >> .ssh/authorized_keys'

Шаг 3. Войдите на сервер без пароля

После создания пары ключей SSH и загрузки открытого ключа на удаленный сервер вы должны иметь возможность подключаться к выделенному серверу без ввода пароля.

Проверьте, работает ли установка, выполнив команду:

ssh [remote_username]@[server_ip_address]

Система должна напрямую входить в систему на удаленном сервере, пароль не требуется.

Примечание: убедившись, что вы можете подключаться к удаленному серверу SSH без пароля, рассмотрите возможность полного отключения аутентификации по паролю SSH. Это добавит еще один уровень безопасности и защитит ваш сервер от bruteforce атак.

Дополнительно: Устранение неполадок с разрешениями файлов удаленного сервера

Права доступа к файлам на удаленном сервере могут вызвать проблемы с входом в SSH без пароля. Это обычная проблема со старыми версиями SSH.

Если после выполнения всех шагов вам все еще предлагается ввести пароль, начните с редактирования прав доступа к файлам на удаленном сервере.

  • Установите разрешения 700 для каталога .ssh .
  • Установите разрешения 640 для каталога .ssh/authorized_keys .

Отредактируйте права доступа к файлу с помощью следующей команды:

ssh [remote_username]@[server_ip_address] "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

При появлении запроса введите свой пароль. Если действие было успешным, вывода не будет.

Итог

Если вы хотите автоматизировать обновления и другие задачи или беспрепятственно подключаться к удаленному серверу по SSH, вам следует включить вход по SSH без пароля. Инструкции в этой статье должны помочь вам в этом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *