vscode设置免密登陆remote-ssh
-
确保本机上有ssh,如果没有的话安装一个。
-
在vscode中安装remote-ssh插件,
并连接到服务器 -
生成钥匙对
打开本地电脑上的"终端"(terminal)软件
在本地依次输入以下的命令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
后面。 -
配置ssh参数,将私钥的本地路径添加到
IdentityFile
参数中
在vscode中打开你自己的ssh的config文件,一般位置在~/.ssh/config
,在配置文件中设置好所需要的参数
一般情况下在连接的时候,只需要Host, Hostname, User就行,只不过这个时候我们希望免密连接,所以需要添加上IdentityFile参数在后面。参数的值为私钥的绝对路径/User/username/.ssh/<servername_rsa>
然后ctrl+s保存退出Host
是你自己随便起的,显示在Remote Explore面板下的名字,不影响连接HostName
是主机(服务器)的ipForwardX11
是在连接ssh的时候用到了-X
的参数所以会有这样一个参数User
就是登陆服务器用的用户名Port
是端口号IdentityFile
就是在配置免密登陆时私钥的路径
-
这个时候再试一下应该就可以免密登陆了
-
原理
这个的原理就是vscode在ssh登陆某一个服务器的时候,会先查看~/.ssh/config
文件中的私钥,然后会把这个私钥传递给服务器的ssh,服务器会根据传递来私钥和自己的~/.ssh/authorized_keys
中对应这个来源的公钥进行匹配,如果匹配上了,服务器就允许你的vscode的连接,你就连接上了。