Windows terminal 免密码登录Linux服务器


Linxu 服务器配置

登录 Linux 并生成密钥对

首先我们使用 putty 登录 Linux 服务器

putty登录服务器

再让 Linux 服务器先生成 rsa 密钥对供我们认证。使用如下命令

ssh-keygen

命令执行后对于弹出的选项我们一路回车就行

生成密钥对

密钥对生成后我们要将其中的公钥文件id_rsa.pub更改为 authorized_keys,然后将私钥文件id_rsa下载至本地 Windows

更改 Linux 公钥文件名称

我们找到生成密钥的地址 /home/unbuntu/.ssh,因为我们现在就是在当前用户目录下生成的密钥,所以只需要输入cd .ssh即可跳转至密钥存放的文件夹,ls查看一下。确实存在我们刚刚生成的密钥,最后更改公钥文件名称 Linux 端就大功告成了。再查看一下,文件是否更改成功

//跳转到密钥文件所在目录
cd .ssh

//更改公钥文件名
mv id_rsa.pub authorized_keys

更改公钥文件名称

Windows 端配置

从 Linux 服务器下载私钥

Linux 服务器已经生成了密钥对,并且我们也成功将 Linux 中的公钥文件修改成功。接下来我们只要将 Linux 生成的私钥下载至本地即可。

首先我们需要确定 Linux 上私钥的存放地址,然后再确定 Windows 中我们将私钥存放的地址。比如 Windows 中我就将私钥存放在D:\ssh_keys\tencent

找到 Linux 中文件存放的地址,其实地址之前我们生成密钥对的时候就已经显示过了,我们只需要复制下来即可。私钥文件路径/home/ubuntu/.ssh/id_rsa

获取私钥

使用 scp 将文件下载至我们指定的位置: scp ubuntu@Linux的IP:/home/ubuntu/.ssh/id_rsa D:\ssh_keys\tencent

//scp命令格式
scp Linux用户名@Linxu的IP地址:密钥的文件路径 Windows存放密钥的文件路径

根据提示输入 Linxu 用户密码

下载私钥

下载完成后我们可以看见我们的密钥文件

找到私钥

到了这一步我们就可以使用密钥登录啦,在命令行中输入:ssh -i D:\ssh_keys\tencent\id_rsa ubuntu@Linux的IP地址

//登录命令格式
ssh -i Windows中私钥的文件路径 Linux用户名@Linxu的IP地址

登录成功

密钥登录

设置私钥文件权限

走到这一步我们已经基本完成了,但是还有一个问题就是当我们执行密钥登录时 Windows 可能会提示我们私钥文件过权限大,忽视这个私钥,导致我们无法使用密钥登录

私钥文件权限过于开放

这时我们需要将私钥文件id_rsa的权限设置为仅所有者控制

在 Windows 资源管理器中找到id_rsa文件,右键单击该文件,然后选择“属性”。导航到“安全性”选项卡,然后单击“高级”。

将所有者更改为你,禁用继承并删除所有权限,把除了自己以外的权限条目全部删除。然后授予自己“完全控制权”并保存权限。

删除其它用户对私钥文件的权限

现在 SSH 不再抱怨文件权限太开放了。

若原本权限条目中没有拥有者,则去添加中寻找并加入

寻找本机用户组

设置 Windows terminal

只需要去设置中将我们刚才登录 Linux 的命令复制一份并保存就可以了

Windows terminal设置

这样以后我们打开 Windows terminal 选择选项卡就可以登录服务器了,打完收工!