本地环境:windows
远程服务器:ubuntu
每次使用vscode登录远程服务器ubuntu时,都要输入密码,切换个工作目录也要输入密码,相当之麻烦。ssh免密登录ubuntu远程服务器,会方便得多,特别是在多台远程服务器之间切换。
简单两步即可设置好:
step1:windows本地生成密钥
在windows的cmd命令窗口,执行如下命令生成密钥并保存到windows用户文件夹的.ssh目录下,如:C:\Users\your-user.ssh\id_rsa.pub:
ssh-keygen -t rsa -b 4096
如没有ssh-keygen命令,安装openssh客户端。或参考:https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client
step2:复制密钥到ubuntu远程服务器
在windows的cmd命令窗口,执行如下命令,把windows本地的公钥文件id_rsa.pub复制到ubuntu远程服务器。
ssh-copy-id -i "$PUBKEYPATH" "$USER_AT_HOST"
例子:将C盘中的公钥id_rsa.pub复制到odoo@8.106.28.37
ssh-copy-id -i "C:\Users\your-user\.ssh\id_rsa.pub" "odoo@8.106.28.37"
如没有ssh-copy-id命令,可以在这里下载:https://download.csdn.net/download/ghs675533291/10941955
更详细的设置方法可参见vscode官网:https://code.visualstudio.com/docs/remote/troubleshooting#_configuring-key-based-authentication
2020.8.30补充:
上面的方法是对我的手提电脑成功设置,但在家中台式电脑上生成密钥时却报错:unknown key type rsa
如下图:
经查,是家中台式电脑win10里面预装的OpenSSH是Beta版本,该版本仅支持ed25519加密类型,不支持dsa,rsa,ecdsa等加密类型。详见:https://github.com/PowerShell/Win32-OpenSSH/issues/1001
解决办法:
step1:windows本地生成密钥
在windows的cmd命令窗口,执行如下命令生成密钥并保存到windows用户文件夹的.ssh目录下,如:C:\Users\your-user.ssh\id_ed25519.pub:
ssh-keygen
step2:复制到远程服务器
在windows的cmd命令窗口,执行如下命令:
scp id_ed25519.pub odoo@8.106.28.37:/home
step3:将公钥追加到远程服务器的authorized文件中
cat /home/id_ed25519.pub >> /root/.ssh/authorized_keys
然后就可以免密登录。在windows的cmd中执行:
ssh odoo@8.106.28.37
或在vscode中免费登录。