概述
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地进行远程登录和其他网络服务。在 Windows 环境下,它主要用于安全地连接到远程服务器、传输文件等操作,通过加密机制确保数据传输的保密性、完整性和真实性。windows下默认存储路径如下。
公私钥生成方法
-
使用 Windows 自带的 OpenSSH 工具
-
步骤一:打开命令提示符或 PowerShell
- 在 Windows 的开始菜单中搜索 “命令提示符” 或 “PowerShell” 并打开。
-
步骤二:生成密钥对
-
输入命令
ssh - keygen -t rsa -b 4096
(以生成 RSA 类型、4096 位的密钥对为例)。
-t
参数指定密钥类型,RSA 是一种常用的非对称加密算法,具有较高的安全性。-b
参数指定密钥长度,较长的密钥长度可以提供更强的安全性,但也会增加计算资源的消耗。
-
按下回车键后,系统会提示您输入保存密钥文件的路径。默认路径是
C:\Users\Administrator\\.ssh
,直接回车即可接受默认路径。 -
接着系统会询问是否设置密码短语(passphrase)。如果设置了密码短语,每次使用私钥进行身份验证时都需要输入该密码短语,这增加了安全性;如果不设置,身份验证过程会更便捷,但安全性相对较低。
-
-
步骤三:查看生成的密钥文件
- 在
C:\Users\Administrator\\.ssh
目录下,会生成两个文件:id_rsa
(私钥)和id_rsa.pub
(公钥)。私钥文件是保密的,不能泄露给他人,而公钥文件可以发送给远程服务器用于身份验证。
- 在
-
-
使用第三方工具(如 PuTTY)
- 步骤一:下载和安装 PuTTY 及 PuTTYgen
- 从 PuTTY 官方网站下载 PuTTY 和 PuTTYgen 工具。PuTTY 是一个 SSH 和 telnet 客户端,PuTTYgen 用于生成 SSH 密钥对。
- 步骤二:生成密钥对
- 打开 PuTTYgen,在 “参数” 区域选择密钥类型(如 RSA)和密钥长度。
- 点击 “Generate” 按钮,然后在出现的空白区域内随机移动鼠标,直到进度条完成,这样就生成了密钥对。
- 步骤三:保存密钥文件
- 在 PuTTYgen 中,可以通过 “Save private key” 按钮保存私钥文件,通常保存为.ppk 格式。公钥内容可以通过复制文本框中的内容获取,用于发送给远程服务器。
- 步骤一:下载和安装 PuTTY 及 PuTTYgen
应用示例
Git SSH 配置
将公钥添加到 Git 服务器
- 登录到 GitLab 账户。
- 点击右上角的头像,选择 “Preferences”。
- 在左侧菜单中点击 “SSH Keys”。
- 在 “Title” 字段中为你的密钥输入一个名称。
- 将公钥内容粘贴到 “Key” 字段中。
- 点击 “Add Key” 按钮完成添加。
配置本地 Git 使用 SSH
-
检查现有远程仓库连接方式
-
打开命令提示符或 Git Bash,进入本地 Git 仓库所在的目录。
-
输入
git remote -v
,这会显示当前仓库的远程连接信息,格式类似于:
origin https://github.com/用户名/仓库名.git (fetch)
origin https://github.com/用户名/仓库名.git (push)
-
如果显示的是
https
开头的连接方式,你可能需要将其转换为ssh
连接方式。
-
-
转换远程仓库连接方式为 SSH
-
对于上述的
origin
远程仓库,输入命令git remote set - url origin git@github.com:用户名/仓库名.git
(将其中的 “用户名” 和 “仓库名” 替换为实际的值)。 -
再次输入
git remote -v
来确认远程连接方式已经成功转换为
ssh
格式,应该显示类似如下内容:
origin git@github.com:用户名/仓库名.git (fetch)
origin git@github.com:用户名/仓库名.git (push)
-
-
配置全局或局部 SSH 命令(可选)
- 全局配置:如果想在所有 Git 仓库中使用特定的 SSH 命令(例如,指定私钥路径),可以使用
git config --global core.sshCommand "ssh -i C:/Users/用户名/.ssh/id_rsa"
(将 “用户名” 替换为实际的值)。这样,在所有仓库进行 SSH 相关操作时,都会使用这个指定的私钥进行身份验证。 - 局部配置:如果只想在某个特定的仓库中使用特定的 SSH 命令,可以在该仓库目录下执行
git config core.sshCommand "ssh -i C:/Users/用户名/.ssh/id_rsa"
,这种配置只对当前仓库生效。
- 全局配置:如果想在所有 Git 仓库中使用特定的 SSH 命令(例如,指定私钥路径),可以使用
VSCode 远程免密登陆服务器
-
服务器端配置
-
步骤一:将公钥添加到服务器的授权密钥文件
- 登录到远程服务器(可以使用密码登录或者已经配置好的 SSH 密钥登录)。
- 如果服务器上没有
~/.ssh
目录,则创建该目录并设置正确的权限:mkdir -p ~/.ssh && chmod 700 ~/.ssh
。 - 将本地生成的公钥(例如,通过
cat C:\Users\Administrator\\.ssh\id_rsa.pub
获取内容)添加到服务器的~/.ssh/authorized_keys
文件中。可以使用echo "公钥内容" >> ~/.ssh/authorized_keys
命令进行添加。
-
步骤二:检查服务器 SSH 配置文件(可选)
-
查看服务器的
/etc/ssh/sshd_config
文件,确保以下配置项正确设置:
RSAAuthentication yes
:允许 RSA 密钥认证。PubkeyAuthentication yes
:允许公钥认证。AuthorizedKeysFile.ssh/authorized_keys
:指定授权密钥文件的位置。
-
修改配置文件后,需要重启 SSH 服务(不同操作系统重启命令不同,例如在 Ubuntu 上是
sudo service ssh restart
)。
-
-
-
VSCode 端配置
- 步骤一:安装 Remote - SSH 扩展
- 打开 VSCode,在扩展商店中搜索 “Remote - SSH” 并安装。
- 步骤二:配置远程连接
- 在 VSCode 的侧边栏中点击 “Remote Explorer” 图标,然后在 “SSH Targets” 下点击 “+” 号。
- 输入远程服务器的 SSH 连接信息,格式为
ssh - user@server -p port
(其中 user 是服务器用户名,server 是服务器 IP 地址或域名,port 是 SSH 服务端口,默认是 22)。
- 步骤三:连接服务器
- 点击新添加的远程连接条目,选择 “Connect to Host in New Window”,VSCode 会自动使用本地的私钥进行身份验证,成功后就可以在 VSCode 中远程编辑服务器上的文件,实现免密登录。
- 步骤一:安装 Remote - SSH 扩展