1.场景:
本地windows10主机,连接远程单/多个Linux服务器,使用秘钥实现vscode/windows terminal免密登录。
2.前期准备:
(1)在本地生成秘钥
在本地主机上,打开cmd命令窗口或windows terminal,执行命令:
ssh-keygen -t rsa
生成秘钥,这里需要多按几次回车键直到结束。执行结束后会在路径
C:\用户\用户名\.ssh
文件夹下生成两个文件:id_rsa,id_rsa.pub,前者为私钥,后者为公钥。要想实现远程免密连接,需要把公钥存放至远程服务器端。
(2)将本地公钥上传至远程服务器
在windows terminal 执行命令:
scp c:\users\user_name\.ssh\id_rsa.pub xxx@192.168.50.666:\home\xxx\
将本地公钥拷贝至远程服务器下。【注意:把用户名和ip改为相应的内容!!!】
(3)将公钥写入文件中
在远程服务器上,执行命令:
touch ~/.ssh/authorized_keys
生成文件保存公钥。执行命令:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
将公钥存入文件。执行命令:
chmod 700 ~/.ssh/
修改文件夹的权限。执行命令:
chmod 600 ~/.ssh/authorized_keys
修改文件的权限。执行命令:
rm ~/id_rsa.pub
删除公钥。至此,已经成功了一半了。
3.设置vscode实现免密登录
打开vscode,进入Remote Explorer:
如图所示,如果已经登陆过远程服务器了,就会有这些ip选项,单击下图中的设置按钮:
此时会弹出配置页面,其中已有的内容如下:
Host 192.168.50.xxx
HostName 192.168.50.xxx
User puxitong
添加一行内容如下:
Host 192.168.50.xxx
HostName 192.168.50.xxx
User puxitong
IdentityFile "C:\Users\xxx\.ssh\id_rsa"
Ctrl+s保存文件。即把本地私钥的路径添加了进去。
这时就大功告成了,再次打开这个ip的远程服务器,就不需要输入密码了!
4.设置windows terminal实现免密登录
打开windows terminal,单击上方标签栏右侧的下三角,出现如下选项:
选择并单击设置选项,弹出设置页面,找到设置页面中的如下json代码段:
"profiles":
{
"defaults":
{
// Put settings here that you want to apply to all profiles.
},
"list":
[
{
// Make changes here to the powershell.exe profile.
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false
},
{
// Make changes here to the cmd.exe profile.
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "命令提示符",
"commandline": "cmd.exe",
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
}
在其后添加如下代码片段【注意:大括号后面用逗号隔开】:
{
"acrylicOpacity" : 0.5,
"closeOnExit" : true,
"commandline" : "ssh -i C:\\Users\\xxx\\.ssh\\id_rsa xxx@192.168.50.xxx",
"cursorColor" : "#FFFFFF",
"cursorShape" : "bar",
"fontFace" : "Consolas",
"fontSize" : 14,
"guid" : "{af308516-24c5-49fe-afb8-9b3f3b23fb66}",
"historySize" : 9001,
"name" : "Linux1",
"padding" : "0, 0, 0, 0",
"snapOnInput" : true,
"startingDirectory" : "",
"useAcrylic" : false
}
其中,主要是将
"commandline" : "ssh -i C:\\Users\\xxx\\.ssh\\id_rsa xxx@192.168.50.xxx"
中的路径改成自己的本地私钥路径,ip改为服务器相应的ip,即可实现windows terminal远程连接免密登录。