你们的远程emacs使用方案是什么?

这个索引导航之类的也支持么?

tramp我很久很久之前用过。但是当时索引导航之类的不方便。就放弃了。

我就是因为堡垒机这个场景。彻底放弃了gui。

lsp-bridge 内建远程代码编辑、代码补全、代码定义跳转等一些功能的支持, 目前需要基于ssh的机制和远程服务器建立连接的。

如果有堡垒机, 除了 terminal 的方式, 有什么网络连接的方式吗?

理论上如果可以连接的话, lsp-bridge 也可以增加支持。

堡垒机支持起来应该也不难。只需要ssh的时候支持自定义会话动作即可。 堡垒机ssh登录上去之后是一个文本界面,选1 2 3,或者输入什么。就跳转到目的地了。

vscode好像不能支持,它只有设置一个proxy。不支持会话。

理论上只要 ssh 能连通,中间的交互步骤在技术上也是可以解决的。

而且如果访问的资源是确定的,那么还可以跳过交互步骤直达,例如:

$ ssh demo@test@[email protected] -p2222
# demo.jumpserver.org 为堡垒机域名
# 2222 为 ssh 访问端口
# demo 是堡垒机登录的账号,demo 账号的密码是 jumpserver
# test 是资产的登录账号
# test_ssh 是资产的 ip 或者 域名(内部改写了 hosts)

关键在于,公司如果有堡垒机,那么就有必要要问一下是否允许用本地编辑器连上去编辑,因为这样相当于从服务器上下载资源到本地。没问清楚就连上去,有可能违反了公司的资安规定。

如果允许本地编辑器连上去编辑,像 jumpserver 还有针对 VScode 的"贴心"设置:

$ cat /opt/jumpserver/config/config.txt
ENABLE_LOCAL_PORT_FORWARD=True   # 是否开启本地转发 (目前仅对 vscode remote ssh 有效果) v2.11 新增
ENABLE_VSCODE_SUPPORT=True       # 是否开启 针对 vscode 的 remote-ssh 远程开发支持
                                 # ( 前置条件: 必须开启 ENABLE_LOCAL_PORT_FORWARD ) v2.11 新增。
                                 # ( 注意: vscode 的连接操作,无审计功能 )
1 个赞

没用过跳板机类的场景,ssh-deploy 支持ssh 连通,场景要自己摸索了

deployment-configuration-examples

没有了 ssh,Emacs 本身要怎么编辑远程的文件似乎也成了问题,这个只靠 lsp bridge 也不好实现了吧🤣

堡垒机都支持vscode了。这个挺好。如果它支持vscode,不知道能不能利用一下,emacs模拟一下vscode的ssh。

即使有 jump server,ssh 也能一条命令搞定的,所以理论上 emacs GUI 是可行的,但我一般用的命令行模式,也很顺手

如我在 #12 楼所说,如果你确定堡垒机后面的资源,可以 ssh 直达,不必交互。以 jumpserver 为例:(用户 demo 密码 jumpserver,你现在就可以试试)

$ ssh demo@test@[email protected] -p2222
demo@test@[email protected]'s password:
开始连接到 test(test)@jms_gw  0.7
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-78-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
test@eaaab210e843:~$ ls -a
.  ..  .bash_logout  .bashrc  .profile

Emacs tramp 连上去编辑也没有问题: C-x C-f /ssh:demo@test@[email protected]#2222:/home/test/.profile

image

关键在于公司是否允许你这么做,不允许的话,就算你用技术手段达成了,那也是违反公司规定。

所以,决定你用什么远程方案的,不单单是技术问题。

1 个赞

堡垒机很多情况是带会话的

很多堡垒机是带会话的。而且会话菜单自己配置,各不相同。有的在登录的时候还需要输入双因素验证的动态key。

你试一下这两条命令:(密码 jumpserver)

ssh [email protected] -p2222
ssh demo@test@[email protected] -p2222

对,就是这个模样。有时候公司会自己定义一个菜单,进去之后直接选 1 2 3 进入不同的服务器。有时候还会分层次。有时候连堡垒机还需要输入动态口令。

如果能支持自定义这个会话的动作。比如连上之后自动输入1 3.就可以了。这样进入不同的服务器自定义一个会话。然后直接进去。

总结一下:目前emacs远程没有特别好的方案。

如果能弄成vscode那样方便,绝对是个杀手级应用。

我现在正在用 tramp,没跳板机的话可以,没折腾过跳板机

感觉 tramp 比直接 ssh 还要快,我 ssh 上去有时候还要卡一下

有没有大佬能做一个像vscode 那种远程连接的解决方案呀?求求了

这是一个需求。不过估计没那么容易,工作量也应该很大。vs相当于在远端装了一个server,如果emacs也这么搞,那整个结构都变了。

lsp-bridge就已经做到了

1 个赞