非root用户配置VS Code Remote-SSH - - windows系统

(一次比较艰辛的“摸鱼”过程,但成功免密连接远程服务器之后感觉很不错!!!)

1、效果图

先领略一下最终的效果,

effect_picture.png

可以在VS Code中创建、删除、编辑服务器端的文件,当然也有linux的命令行。还是挺方便的~

2、从VS Code的应用扩展商店添加Remote Development插件

  • ① 点击左侧栏下方的extensions图标
    extensions.png
  • ② 输入remote,弹出相关扩展
  • ③ 找到Remotem Development,点击install
    (在这里一定要安装Remotem Development,包含的其他扩展会自动安装)
    fig2_1.png

    安装完成后,多了椭圆形标记的Remote Explorer图标。
    Remote-Explorer.png

    ENABLED下会出现Remote相关的5个插件,如下图所示:
    fig2_2.png

3、配置Remote SSH

  • ① 在VS Code中,Ctrl + ,,输入show login terminal,勾选
    fig3_1.png
  • ② 在VS Code中,Ctrl + Shift + P,输入remote-ssh
    fig3_2.png
  • ③ 通常选择第一个,


    fig3_3.png
  • ④ 添加配置信息
    fig3_4.png

    这里IdentityFile为下面步骤生成的本地私钥路径
    如果有多个连接,可以配置多个。因此一台PC可以连接到多个远程服务器端

4、配置免密登录

VS Code通过SSH远程服务连接远程服务器,每次连接、打开文件夹、执linux命令等都需要输入密码,非常麻烦。
可以通过配置免密登录避免每次操作时都输入密码。

4.1 本地PC端本地安装SSH

Windows系统可以安装OpenSSH或者通过Git安装SSH,方法不在这里赘述。
在命令行中输入如下命令表示本地SSH安装成功:

  • Win + R --> cmd --> 确定
  • ssh
    fig4.1_1.png

4.2 生成本地PC端密钥

  • cd .\.ssh,进入.ssh目录
    fig4.2_1.png
  • ssh-keygen -t rsa,生成密钥。出现以下选项时:
    Enter file in which to save the key:直接回车
    Enter passphrase:直接回车
    Enter same passphrase again:直接回车
    fig4.2_2.png
  • dir/b查看创建好的密钥文件
    /b 是仅列出文件名称
    id_rsa是密钥
    id_rsa.pub是公钥
    fig4.2_3.png

    记得回去将id_rsa的路径添加到3④的IdentityFile中!

4.3 上传公钥至服务器端个人所在的根目录的.ssh/

由于是非root用户,所以需要在远程服务器进行以下步骤:

  • ① 若不存在.ssh/,手动创建
mkdir .ssh
fig4.3_1.png
  • ② 进入.ssh/
cd .ssh/
fig4.3_2.png
  • ③ 使用Xftp等工具(或者scp命令)将id_rsa.pub上传至该目录
    fig4.3_3.png
  • ④ 将id_rsa.pub的内容追加至authorized_keys
cat id_rsa.pub >> authorized_keys
ls

fig4.3_4.png

authorized_keys文件可以按行存储多台本地PC的公钥,因此可以使用不同的本地PC连接同一个远程服务器端

  • ⑤ 修改权限
    修改authorized_keys权限为600
chmod 600 authorized_keys

fig4.3_5.png

修改.ssh/权限为700

chmod 700 .ssh

fig4.3_6.png

在这里一定要修改以上二者的权限(解决方法,参考记一次ssh免密登录踩坑and Debug之路),不然即使进行下一步后,在cmd命令行通过ssh username@ip_adress -p port免密登录仍然失败,提示输入密码(debug提示参考SSH远程登录主机失败,求路过的高手指点迷津)

# 上面还有很多debug提示
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: password

在服务器端查看sshd日志,会出现类似下面的语句:

Authentication refused: bad ownership or modes for directory /root

原因是:~/.ssh文件需要只供用户自己读、写、执行(权限为700),而其他用户不可以有任何权限

  • ⑥ 重启服务器端SSH
    方法1:由于是==非root==用户,使用sudo
sudo service sshd restart

方法2:sudo仍然没有权限的可以请root用户帮忙~
方法3:或者exit退出此次登录。随后再重新登录服务器即可。

5、连接

  • ① 新建连接


    fig5_1.png
  • ② 选择Linux
    fig5_2.png

    在这里如果连接失败,可以重新启动VS Code
  • ③ 新建linux命令行终端
    fig5_3.png

    之后便可以达到本文开头展示的效果啦~~
    tips:3①、5②也可以通过设置settings.json文件达到同样的效果
    "remote.SSH.showLoginTerminal": true, "remote.SSH.remotePlatform": { "pangu": "linux" }
    tips.png

References:

  • 我最终还是选择了VS code!
  • VS Code Remote SSH配置
  • Win10配置ssh密钥免密连接Linux服务器
  • 记一次ssh免密登录踩坑and Debug之路
  • SSH远程登录主机失败,求路过的高手指点迷津

你可能感兴趣的:(非root用户配置VS Code Remote-SSH - - windows系统)