У меня есть VPS, который я регистрирую на root
через ключи SSH.
Теперь я создал другого пользователя user1
с помощью команды adduser
и назначил ему пароль. Однако всякий раз, когда я пытаюсь войти на сервер через winSCP
, используя user1
, я все равно получаю сообщение об ошибке, что мне нужно ввести закрытый ключ, и я не могу войти, используя пароль для пользователя 1.
У меня следующие вопросы:
Вы можете добавить правила для этого конкретного пользователя в файл /etc/ssh/sshd_config
, как пример в конце этого ответа. Но прежде чем предупредить , разрешить вход в систему паролем через SSH несколько небезопасно с точки зрения попыток перебора на сервере. Поэтому самый безопасный способ - создать еще один ключ SSH на VPS или другой машине Linux со следующей строкой. Лучше всего переключиться на user1 на этом компьютере, прежде чем вы начнете использовать следующие команды с su - user1
. (Примечание: вы должны перейти в каталог, в котором вы хотите создать пару ключей, так как -f
трудно с путями):
ssh-keygen -t rsa -C "user1_email@example.com" -f user1_key
Пользователь может позже самостоятельно изменить пароль на короткое время скопировать его пару ключей на VPS или на другую машину Linux с помощью:
ssh-keygen -p -f user1_key
Затем передать закрытый ключ (user1_key
) пользователю1 и поместить открытый ключ (user1_key.pub
) в домашнем каталоге пользователей в ~/.ssh/authorized_keys
на VPS затем измените владельца на user1, или вы делаете su - user1
, прежде чем делать это, чтобы предотвратить нежелательное неправильное владение внутри домашнего каталога user1.
mkdir -p /home/user1/.ssh
cat user1_key.pub >> /home/user1/.ssh/authorized_keys
# The next line is only needed if you have done the two above as 'root'
chown -Rv user1:user1 /home/user1/.ssh
Процесс создания пары ключей можно выполнить и в Windows, используя WinScp, см. здесь для справки. Затем вы можете захотеть убедиться, что открытый и закрытый ключи имеют права доступа, установленные 0600
для личного ключа пользователя и 0644
для открытого ключа пользователя. (Примечание: копирование ключа на USB-накопитель или диск в формате Windows позволяет ключу потерять свои установленные разрешения, поэтому вы должны дважды проверить это.
Если вы действительно хотите, чтобы этот пользователь мог войти в систему с помощью пароля вы можете изменить следующую строку в /etc/ssh/sshd_config
:
AllowUsers mainuser user1
и добавить в конце следующее:
Только для включения пароля:
Match User user1
PubkeyAuthentication no
PasswordAuthentication yes
Для включения обоих:
Match User user1
PubkeyAuthentication yes
PasswordAuthentication yes
Для включения только ssh вы можете удалить эту часть или установить для нее:
Match User user1
PubkeyAuthentication yes
PasswordAuthentication no
Дополнительные материалы для чтения, которые могут быть связаны не с вопросом, а с В общем, SSH вы можете найти здесь , просто имейте в виду, что некоторая информация указана для digital-океана, но все еще полезна. Смотрите также справочную страницу для команды ssh-keygen
и man-страница для команды ssh
.
Спасибо @ Eliah-Kagan за корректуру и предложение исправлений и дополнений.