跳转至

SSH 密钥登录

点击这里,边看视频讲解,边学习以下内容

SSH

SSH(secure shell)是目前主流的 管理远程主机 的 加密通信协议。

通信双方是 SSH Client(客户端) 和 SSH Server(服务端)

使用这种协议操作远程主机的第一步就是要 登录


登录 SSH 服务器的方式有多种,最常见的可能是通过 密码 登录。

但是,最推荐的是通过 SSH密钥 登录, 这是目前最安全、便捷的登录服务器的方式。


现在的 服务端主流都是采用 Open SSH Server,安装也非常方便。

这里主要介绍其对应的客户端 Open SSH Client 的安装设置

Windows 环境客户端设置

1 安装 OpenSSH 客户端

本文写作时间2023年,Windows 10 和 Windows 11 已经早就内置支持了OpenSSH, 并且默认安装了 OpenSSH 客户端。

所以,通常不需要你安装。


如果你在命令行执行 ssh 提示没有找到程序,说明 Open SSH Client 没有安装。

通过下面的方法安装


以管理员权限 运行 Powser Shell

执行如下命令

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

会看到类似如下输出

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

然后执行

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Name 参数的值就是前面命令出现的 OpenSSH Client 的 Name


有时发现安装会卡死状态, 这时可以重新启动电脑。多试几次。


安装完成后,可以成功执行 ssh 命令了

2 产生 SSH 公私钥文件

安装好 OpenSSH Client 后, 会有一个内置命令 ssh-keygen 用来产生 SSH 公私钥文件。

这是一对文件, 公钥放在服务端, 私钥放在客户端。

SSH 服务端和客户端通过 他们来进行身份验证。

执行这个命令 ssh-keygen

出现类似 下面这些提示直接回车

Enter file in which to save the key (C:\Users\byhy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

最终提示类似下面这样:

Your identification has been saved in C:\Users\byhy/.ssh/id_rsa.
Your public key has been saved in C:\Users\byhy/.ssh/id_rsa.pub.

说明 SSH 公私钥文件成功产生,

C:\Users\byhy/.ssh/id_rsa.pub 是公钥文件

C:\Users\byhy/.ssh/id_rsa 是私钥文件

3 公钥文件内容配置到服务主机

这一步的本质是: 把公钥内容添加到 到服务端登录账号 根目录下的 .ssh/authorized_keys 文件中


方法1:直接编辑远程 .ssh/authorized_keys 文件

  • 文本编辑器打开 id_rsa.pub 文件, 全选并复制里面的文本内容

  • 远程登陆到 服务端, vim 打开 .ssh/authorized_keys 文件,文件末尾添加一行, 把复制的id_rsa.pub 文件内容粘贴进去

  • 保存文件


方法2:使用 Winscp 软件 自动设置

点击这里下载WinSCP

如果你安装了 Winscp 软件

  • 打开会话管理, 选择 edit, 点击 advanced 按钮

  • 弹出对话框中左边点击 SSH - Authentication

  • 右边点击 tools , 弹出下拉菜单选择 Install Public Key into server

  • 弹出文件选择框里面 选择 All Files, 然后选择刚才产生的公钥文件 id_rsa.pub 开始上传。


上述这3步成功后, 再运行ssh命令, 比如 ssh root@hostname ,应该可以使用自动使用对应的 密钥 认证了。

也可以 ssh root@hostname -i c:\Users\byhy\.ssh\id_rsa 指定使用私钥文件