需要用到的东西
1. remote-ssh 插件(在vscode安装)
2. OpenSSH client(自己安装)
需要提前配置的东西 // 实测,什么都不配置也行!!!
1.需要在本地cmd通过openssh client连接一次, 产生 /cygdrive/c/Users/SWS/.ssh/known_hosts
// 该步骤不做也可以,不做的话会有提示框要你输入yes
// 如果你不及时输入,就会连接失败!
2.需要配置 remote-ssh 插件的三个项,配置结果如下
// 实测,什么都不配也行
// 但是你要确保他能找到 ssh.exe , 能及时在对话框中输入 platform
{
"remote.SSH.path": "C:\\Windows\\System32\\OpenSSH\\ssh.exe",
"remote.SSH.configFile": "C:\\Users\\SWS\\.ssh\\config",
"remote.SSH.remotePlatform": {
"192.168.1.8": "linux"
}
}
操作流程:
F1 add new ssh host // 输入 ssh [email protected] -p 22
F1 connect to host
// 会提示你输入 yes
// 会提示你输入 platform
// 会提示你输入 密码
本质流程:
用 ssh(可以来自OpenSSH) 建立链接,之后用ssh host 的 wget下载一个 vscode-server, 解压并运行
中间输入多次密码,所以最好用 "密钥认证" 方式登陆
// 注意,他可能随时弹出让你输入密码的窗口
在这里建立了 ubuntu 本地vscode 使用clangd 阅读代码
更进一步 . 基于 本文 , 可以实现 在 windows vscode 使用 ssh 插件和 clangd 插件. 阅读 ubuntu的 代码
v0.103.2023051015 这个版本,会提示你输入(一定要注意对话框),如果你看不见并没有及时输入platform,就会报这个错
[13:41:48.397] Install and start server if needed
[13:42:11.279] getPlatformForHost was canceled // 重点log
[13:42:11.283] Resolver error: Error: Connecting was canceled
在key中添加 192.168.1.8 ,在value 中添加 linux ,然后点击添加
192.168.1.8 是你要ssh的目标机器, linux是 你目标机器的平台类型
添加后,生成的配置文件如下
{
"remote.SSH.remotePlatform": {
"192.168.1.8": "linux"
}
}
不管怎么样,两侧(client 或者 server)要有一侧有互联网
如果两侧都没有互联网,就需要考虑离线配置了。
下面的配置,会把下载动作放到 ssh client 执行,而不是 ssh server。
每次连接服务器,或者打开文件夹都需要输入一遍密码,很麻烦,解决方案如下
step1.
客户端机器执行 bash ssh-keygen -t rsa -b 4096 一路回车,生成 ~/.ssh/id_rsa.pub
将该文件拷贝到服务器的 ~/.ssh 下并且命名为 authorized_keys
step2.
开启sshd服务的 公钥认证 选项
/etc/ssh/sshd_config 文件添加如下配置并重启sshd
PubkeyAuthentication yes
// 注意 : 只要没有显示的配置 PubkeyAuthentication no , 就是支持 公钥认证
// 即默认支持 公钥认证 , 在 OpenSSH_8.9p1 Ubuntu-3ubuntu0.1 验证
使用ssh-copy-id自动拷贝 id_rsa.pub 到 server 的 authorized_keys
ssh-copy-id -p 22 suweishuai@192.168.1.250
// ssh-copy-id 不存在: https://www.cnblogs.com/zhouzhihao/p/17087666.html
// id_dsa.pub, or id_rsa.pub, or identity.pub .本机有这三个公钥文件,默认拷贝identity.pub
在服务器上新增多个client的公钥
在 authorized_keys 文件最后一行后添加新的就行了
echo /path/to/client/id_rsa.pub >> serverip:~/.ssh/authorized_keys
secureCRT 是怎么做自动ssh的
每次自动输入密码
.ssh
$ ls
config* id_rsa* id_rsa.pub* known_hosts*
config 中记录了 之前保存的 server 信息,包括网址 用户名 端口
id_isa.pub 是ssh-keygen生成的, 记录了 公钥
id_isa 是 ssh-keygen 生成的 , 记录了 私钥
known_hosts 记录了 登陆过的 ssh server 的信息
ssh-keygen 会在家目录生成了两个文件: // 注意 : cygwin 的 家目录 和 cmd.exe 的家目录 不是同一个目录!!!
私钥文件(默认为 id_rsa):
私钥文件是用户自己保存的,不应该泄露给其他人。
它通常被存储在用户主目录下的 .ssh 目录中。
私钥文件用于对 SSH 连接进行身份验证。
公钥文件(默认为 id_rsa.pub):
公钥文件是用户将其提供给其他人或服务器的文件。
公钥文件可以安全地共享给其他人,因为它不包含私钥信息。
公钥文件需要在服务器上添加到 .ssh/authorized_keys 文件中,以便用户可以使用私钥进行身份验证