window下配置ssh免密登录服务器
本地windows远程登录我的ssh服务器10.10.101.xx服务器,想要每次都免密登录这个服务器.
记录下教程,防止后期忘记,指导我实现这个过程。
教程
二、实践步骤:Windows 上配置 SSH 免密登录
2.1 确认环境要求
-
Windows 版本 :Windows 10 1809 或更高版本(已内置 OpenSSH 客户端)。
-
服务器确保
sshd_config
中启用公钥认证(默认已启用):PubkeyAuthentication yes
2.2 步骤 1:生成 SSH 密钥对
-
打开 PowerShell 或 CMD,运行以下命令生成密钥:
ssh-keygen -t rsa
-
按提示选择保存路径(默认为
C:\Users\你的用户名\.ssh\id_rsa
)。 -
设置 passphrase(可直接回车跳过,实现免密登录)。
-
-
生成后,你会得到两个文件:
- 私钥 :
~/.ssh/id_rsa
(本地保留) - 公钥 :
~/.ssh/id_rsa.pub
(需上传到服务器)
- 私钥 :
2.3 步骤 2:将公钥上传到服务器
方法一:使用 scp
和手动追加
-
上传公钥文件到服务器:
scp .ssh/id_rsa.pub 用户名@10.10.100.xx:~/id_rsa.pub
- 替换
用户名
为你的服务器账户名(如user
)。
- 替换
-
登录服务器并添加公钥:
ssh 用户名@10.10.100.99 mkdir -p ~/.ssh cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys rm ~/id_rsa.pub
2.4 步骤 3:配置 SSH 客户端(可选)
编辑本地 SSH 配置文件,简化登录命令:
-
创建或编辑配置文件:
powershell
notepad ~/.ssh/config
-
添加以下内容:
Host myserver HostName 10.10.100.99 User 用户名 IdentityFile ~/.ssh/id_rsa
- 替换
用户名
为服务器账户名。
- 替换
-
后续登录只需:ssh myserver
2.5 步骤 4:测试免密登录
运行以下命令测试:ssh 用户名@10.10.100.99
或使用配置别名:ssh myserver
- 如果无需输入密码即可登录,说明配置成功!
原理
一、原理讲解:SSH 公钥认证如何工作?
1.1 非对称加密基础
SSH 免密登录基于 非对称加密 (Asymmetric Cryptography),使用一对密钥:
- 公钥(Public Key) :可公开分享,用于加密或验证身份。
- 私钥(Private Key) :必须严格保密,用于解密或证明身份。
1.2 SSH 登录流程
-
客户端生成密钥对 :在本地生成公钥和私钥。
-
上传公钥到服务器 :将公钥添加到服务器的
~/.ssh/authorized_keys
文件中。 -
登录时的身份验证 :
- 服务器发送一个随机挑战(Challenge)。
- 客户端用私钥加密该挑战并返回。
- 服务器用公钥解密,验证身份,无需密码即可登录。
1.3 安全性说明
- 私钥文件(如
id_rsa
)必须妥善保管,避免泄露。 - 服务器上的
~/.ssh/authorized_keys
文件权限需严格限制(如600
),否则 SSH 会拒绝登录。 - 可选择为私钥设置 passphrase,但免密登录通常不设。