SSH的两种登录方式

阅读 7

Linux的SSH登录最常见的有两种方式:一种是使用钥来进行认证;一种是使用密码进行认证。

默认认证方式

在绝大多数主流 Linux 发行版(如 Ubuntu, CentOS, Debian)的默认安装中,这两种方式是同时支持的。

当尝试连接时,SSH 客户端通常会先尝试使用私钥。如果本地存在匹配的私钥且服务器允许,则直接登录;如果私钥认证失败(或本地没有私钥),系统会回退(Fallback)到密码认证。

不过,很多云服务商(如 AWS, Google Cloud, 阿里云)提供的镜像,为了安全性,默认会禁用密码登录,强制要求使用密钥。

密钥认证

如果使用这种方式,首先,需要在客户端电脑上,检查当前用户目录的.ssh目录下是否已经存在秘钥对。如果没有,可以使用下面命令生成一对秘钥:

ssh-keygen -t rsa -b 4096

执行完成后,会在.ssh目录下生成私钥 id_rsa 和公钥 id_rsa.pub

注意:如果是现代环境(OpenSSH 6.5+,2014年后),优先用 ed25519(更快、更短、同样安全)。

然后,将 id_rsa.pub 中的内容复制到服务器的 ~/.ssh/authorized_keys 文件中。如果该文件中已经有其他公钥,那么需要另起一行,将这个公钥复制进去。各个公钥之间必须要有换行,一行一个公钥。

然后,假如服务器的ip地址为192.168.3.84。可以使用下面命令来进行登录:

ssh pi@192.168.3.84

如果认证通过,即可成功登录,无需手动输入pi用户的密码。

那么,这个认证过程究竟是怎么进行的呢?

双方实际会进行如下认证过程:

  1. 客户端向服务器发送登录请求,并告知服务器自己拥有的公钥 ID。
  2. 服务器在 authorized_keys 中找到对应的公钥,生成一个随机字符串(Challenge),并用公钥加密后发回给客户端。
  3. 客户端使用本地的私钥解密这个字符串,再将其发回给服务器。
  4. 服务器验证解密后的字符串是否正确,匹配则允许登录。

这种方式虽然认证机制复杂点,但安全性更高。毕竟密码是给“人”用的,容易丢也容易被猜;密钥是给“机器”校验的,既冷酷又安全。

说完了钥认证方式,接下来聊第二种方式,密码认证

密码认证

这种方式很好理解,就是使用给定的用户名和密码进行认证:

ssh pi@192.168.3.84

当输入上面命令后,服务器会提示需要再输入pi用户的密码。如果密码正确,则允许登录;否则,则不允许登录。

注意:如果有人改动过 /etc/ssh/sshd_config 文件,需要检查PasswordAuthentication是否为no,如果设置为no,需要改成yes,然后执行 systemctl restart sshd 来让服务器的SSH服务支持密码认证方式。

最后编辑于: 2026-05-08

评论(0条)

(必填)
复制成功