аутентификации_по_ключу

SSH Key-Based Authentication

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

ssh-keygen -t rsa -b 4096

После прохождения несложного мастера, колючи можно найти здесь:

  • открытый ключ ~/.ssh/id_rsa.pub
  • Закрытый ключ ~/.ssh/id_rsa

На удаленно хосте, создадим директорию .ssh если таковой не окажется

mkdir .ssh

Копируем публичный ключ на удаленный хост

scp /username/.ssh/id_rsa.pub username@10.10.10.12:/username/.ssh/uploaded_key.pub
# либо если порт не стандартный
scp -P 1215 /username/.ssh/id_rsa.pub username@10.10.10.12:/username/.ssh/uploaded_key.pub

На удаленном хосте, заносим сгенерированный нами открытый ключ в авторизованные ключи сервера. Для этого скопируйте содержимое uploaded_key.pub в конец файла authorized_keys

cat ~/.ssh/uploaded_key.pub >> ~/.ssh/authorized_keys

Установим права

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
ssh username@server_ip
# либо если порт не стандартный
ssh -p 1215 username@server_ip

Если что пошло не так, и при подключении по прежнему просит пароль, смотрим логи на удаленном хосте, все станет ясно:

tail -f /var/log/auth.log
# или так
egrep "Failed|Failure" /var/log/auth.log

Если, при создании ключа была установленна парольная фраза, то есть ее возможность изменить, не генерируя ключ заново. Синтаксис таков:

ssh-keygen -p
 
# Либо так
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
 
# Убираем паольную фразу
ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa 
sudo ssh-copy-id remoteuser@remoteserver

также существует команда ssh-agent, которую можно использовать для хранения закрытых ключей, используемых для аутентификации с открытым ключом. Обычно это полезно, когда ключи защищены парольной фразой.

Чтобы добавить закрытый ключ, хранящийся в /home/username/sshkeys/id_rsa, в ssh-agent, выполните следующие команды:

sudo eval $(ssh-agent)
sudo ssh-add 

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

При попытке входа по ключу, получаем в зубы – Authentication refused: bad ownership or modes for directory /root
На удаленном сервере, смотрим кто владелец директории root

 ls -ld

Если нужно поправляем

chown -R root. /root

При попытке входа по ключу, получаем по лбу:

Permissions 0755 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions

На локальном хосте, устанавливаем правильное разрешение для /root/.ssh/id_rsa

chmod 600 /root/.ssh/id_rsa
  • аутентификации_по_ключу.txt
  • Последнее изменение: 2022/05/11 11:25
  • admin