SSH 与密码

SSH 与密码

root我有一个 VPS,正在通过 SSH 密钥登录。

user1现在,我使用该命令创建了另一个用户adduser并为其分配了密码。但是,每当我尝试通过winSCP使用登录服务器时user1,我仍然会收到错误,提示我需要输入私钥,但无法使用用户 1 的密码登录。

我的问题如下:

  • 用户是否可以通过这两种方法登录?即使用 SSH 密钥和密码?
  • 如果使用SSH,系统所有用户是否必须使用密钥才能登录?

答案1

/etc/ssh/sshd_config您可以像本答案末尾的示例一样,为文件上的特定用户添加规则。但在这之前请注意,允许通过 SSH 密码登录有点不安全就服务器可能遭受的暴力攻击而言。因此,最安全的方式是在 VPS 或另一台 Linux 机器上使用以下行创建另一个 SSH 密钥。最好在开始使用以下命令之前切换到该机器上的 user1。su - user1(注意:您应该切换到要创建密钥对的目录,因为-f路径很难处理):

ssh-keygen -t rsa -C "[email protected]" -f user1_key

用户可以稍后通过将密钥对复制到 VPS 或另一台 Linux 计算机上来自行更改密码:

ssh-keygen -p -f user1_key

然后将私钥(user1_key)交给 user1,并将公钥()放在VPS 下user1_key.pub的用户主目录中,然后将所有权更改为 user1,或者在执行此操作之前这样做,以防止在 user1 的主目录中出现不必要的错误所有权。~/.ssh/authorized_keyssu - 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用户公钥。(注意:将密钥复制到 Windows 格式的 USB 记忆棒或驱动器会使密钥失去其设置的权限,因此您需要仔细检查。

但是,如果您确实希望让该用户能够通过密码登录,您可以更改以下行/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-ocean 指定的,但仍然有用。另请参阅命令手册ssh-keygen命令手册ssh

谢谢@Eliah-Kagan用于校对并提出修改和补充建议。

相关内容