SSH密钥登陆过程
- 客户端通过
ssh-keygen
生成自己的公钥和私钥。 - 手动将客户端的公钥放入远程服务器的指定位置。
- 客户端向服务器发起 SSH 登录的请求。
- 服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。
- 客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。
- 服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。
在服务器中配置远程用户公钥(即客户端需要将自己的公钥配置在Linux服务器中)
-
客户端生成本地公私钥对
ssh-keygen
一路enter键确认,最后会在
C:\Users\{你的用户名}\.ssh
目录下生成两个文件,id_rsa
和id_rsa.pub
; -
将客户端公钥手动上传到Linux服务器中
-
复制客户端公钥
在终端(powershell,没有就下载一个波,因为cmd不支持shell指令)打开
C:\Users\{你的用户名}\.ssh
路径,执行Get-Content ./id_rsa.pub
-
Linux中,
authorized_keys
文件位于~/.ssh/authorized_keys
,如果没有这个文件可以手动创建,并确认authorized_keys
文件权限为600,.ssh
目录权限为700。您可以使用以下命令来确认
authorized_keys
文件权限为 600,.ssh
目录权限为 700:bashCopy code # 确认 authorized_keys 文件权限为 600 ls -l ~/.ssh/authorized_keys # 确认 .ssh 目录权限为 700 ls -ld ~/.ssh
这些命令将会输出文件和目录的详细权限信息。确保权限如下:
authorized_keys
文件权限应该是-rw-------
或者600
.ssh
目录权限应该是drwx------
或者700
如果权限不正确,您可以使用
chmod
命令来更改它们的权限。例如:bashCopy code # 更改 authorized_keys 文件权限为 600 chmod 600 ~/.ssh/authorized_keys # 更改 .ssh 目录权限为 700 chmod 700 ~/.ssh
-
将客户端公钥粘贴到
authorized_keys
文件上。
-
-
确认linux服务器开启了允许SSH免密登录
-
确认linux服务器/etc/ssh/sshd_config配置文件中开启了允许SSH免密登录。
主要就是确认是否有下面这一行,并且没有被注释。PubkeyAuthentication yes
-