vscode设置免密登陆remote-ssh

  1. 确保本机上有ssh,如果没有的话安装一个。

  2. 在vscode中安装remote-ssh插件image
    并连接到服务器image

  3. 生成钥匙对
    打开本地电脑上的"终端"(terminal)软件image
    image
    在本地依次输入以下的命令

    cd ~/.ssh/
    ssh-keygen
    

    来生成私钥-公钥对,注意如果你有多个服务器需要免密登陆的话,生成新的钥匙对的时候得另起一个名字(比如<servername_rsa>,要不然就把之前的覆盖掉了。生成后会有两个文件在目标位置,一个私钥文件<servername_rsa>以及一个公钥文件<servername_rsa>.pub。把.pub后缀的公钥文件拷贝到服务器的~/.ssh/路径下,可以使用scp或者直接用vscode拷贝到服务器上。
    服务器上(使用ctrl+J(command+J)来在vscode中呼出终端)

    cd ~/.ssh/
    cat server_id_rsa >> authorized_keys
    

    命令进入~/.ssh文件夹,来将所需的公钥附加到~/.ssh/authorized_keys后面。

  4. 配置ssh参数,将私钥的本地路径添加到IdentityFile参数中
    image
    在vscode中打开你自己的ssh的config文件,一般位置在~/.ssh/config,在配置文件中设置好所需要的参数image
    一般情况下在连接的时候,只需要Host, Hostname, User就行,只不过这个时候我们希望免密连接,所以需要添加上IdentityFile参数在后面。参数的值为私钥的绝对路径/User/username/.ssh/<servername_rsa>然后ctrl+s保存退出

    • Host是你自己随便起的,显示在Remote Explore面板下的名字,不影响连接
    • HostName是主机(服务器)的ip
    • ForwardX11是在连接ssh的时候用到了-X的参数所以会有这样一个参数
    • User就是登陆服务器用的用户名
    • Port是端口号
    • IdentityFile就是在配置免密登陆时私钥的路径
  5. 这个时候再试一下应该就可以免密登陆了

  6. 原理
    这个的原理就是vscode在ssh登陆某一个服务器的时候,会先查看~/.ssh/config文件中的私钥,然后会把这个私钥传递给服务器的ssh,服务器会根据传递来私钥和自己的~/.ssh/authorized_keys中对应这个来源的公钥进行匹配,如果匹配上了,服务器就允许你的vscode的连接,你就连接上了。

posted @ 2023-03-24 13:31  凛海  阅读(314)  评论(0编辑  收藏  举报