根据this answer,我尝试使用以下命令编辑/etc/resolv.conf
作为我的流浪者盒子上的超级用户:
C-x C-f /vagrant@127.0.0.1#2200|sudo:127.0.0.1#2200:/etc/resolv.conf
但它只是在我的本地计算机上打开了一个文件,报告/vagrant@127.0.0.1#2200|sudo:127.0.0.1#2200:/etc/
作为我的PWD并告诉我使用一些M-x
命令来创建目录,因为它不存在。
意思是它没有连接到我的流浪盒。但是当我输入
C-x C-f /vagrant@127.0.0.1#2200:/etc/resolv.conf
它在我的流浪盒上的只读缓冲区(不使用sudo)中打开文件。
如何使用Emacs 24.3使用sudo访问打开流浪盒上的远程文件(请注意上面默认使用的NAT连接)? (我在Fedora 20上。)
答案 0 :(得分:4)
#port
语法为only supported for SSH-based connection types,因此令sudo
跳混乱。你可以试试像
/ssh:127.0.0.1#2222|sudo:127.0.0.1:/etc/resolv.conf
但这与answer you linked中列出的问题相同:动态代理条目的主机现在为127.0.0.1
,这是您的本地系统,阻止/sudo::
在本地工作
您可以通过为您的Vagrant机器命名来避免这种情况。
如果您向~/.ssh/config
添加条目,例如
Host vagrant
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/chris/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
ForwardX11 yes
然后使用C-x C-f /ssh:vagrant|sudo:vagrant:/etc/resolv.conf
。这样做的另一个好处是可以缩短打字时间。
配置块来自vagrant ssh-config
。
答案 1 :(得分:0)
如果我使用像
这样的东西,对我有用/ssh:vagrant@localhost#2222|sudo:root@localhost#2222:/etc/hosts
作为路径。我认为你的食谱的唯一区别是@Carl Groner在评论中明确包含的ssh:方法
<强>更新强> 我之前曾建议将sudo部分的主机名留空,但事实证明这是一个糟糕的主意,正如@Chris在评论中指出的那样。我也同意他的观点,即#port实际上只是用于使用ssh方法tramp路径,而这可能是更好的避免。
我认为执行此操作的最佳方法是{。{}}为.ssh / config中的流浪汉机器设置ssh别名,或者 - 将您的授权ssh公钥添加到root用户的流浪汉机器 - 并使用单跳以root身份进行编辑,例如
/ssh:root@192.168.100.10:/etc/hosts
完全避免多重复杂。
这是我管理流浪汉编辑的方式。我将流浪汉机器配置为具有config.vm.network "private_network" , ip: 192.168.100.10
的专用网络地址,对于非短暂机器(如开发vms),我将此IP添加到我的主机文件中。 (您还可以将此主机地址的ssh别名添加到.ssh / config中,如下所示)。然后我手动或使用配置将我自己的ssh pubkey放入~root / .ssh / authorized_keys。
显然这涉及更多的流浪汉配置,但是要保持复杂性远离流浪汉,因为我在标准端口22并使用基本的ssh:方法路径。