vscode & windows terminal实现远程服务器免密登录

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 [email protected]:\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:


即这张图中侧边栏第5个选项

如图所示,如果已经登陆过远程服务器了,就会有这些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,单击上方标签栏右侧的下三角,出现如下选项:


image.png

选择并单击设置选项,弹出设置页面,找到设置页面中的如下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 [email protected]",  
                "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 [email protected]"

中的路径改成自己的本地私钥路径,ip改为服务器相应的ip,即可实现windows terminal远程连接免密登录。

你可能感兴趣的:(vscode & windows terminal实现远程服务器免密登录)