远程编程

2024-02-25

我在 Windows 机器上进行开发工作,但在远程 Linux 机器上进行编译。我目前所做的是在 Windows 上启动 X 服务器,通过 ssh 进入 Linux 机器,然后进行远程开发。

我想做的是在 Windows 计算机上编辑源代码,并在保存时自动将文件复制到 Linux 系统。我还希望我的内置编译命令能够在远程系统上执行构建。

如果有区别的话,源代码全部是 C 语言,使用 GCC。按照偏好的降序排列,我的桌面上有 Emacs、Vi 和 Netbeans,并且愿意安装另一个 IDE 作为最后的手段。


这在 vim 中当然是可行的。您可以在 vim 中使用 scp:// 协议来编辑远程文件,并设置写入本地副本的命令。您还可以更改 vim 用于 :make 的程序,以在您的服务器上执行 ssh make。

您需要设置您的 ssh 密钥来轻松完成此操作(否则您将一直输入密码),但这相当简单。

另一种选择是作为 make 命令的一部分推送到远程存储库,而不是远程编辑。


EDIT:

首先,使用scp://vim 内的协议。从:help netrw-start(或从页面向下:help scp)

Netrw 支持使用 url 对其他机器上的文件进行“透明”编辑 (参见 |netrw-transparent|)。作为一个例子,我们假设您有一个 在其他机器上的帐户;如果你可以使用 scp,请尝试:

vim scp://hostname/path/to/file

想让 ssh/scp 更容易使用吗?查看|netrw-ssh-hack|!

您还可以使用scp://路径在:edit命令,或者任何可以使用正常路径的地方。

并且,从提到的:help netrw-ssh-hack,有关如何设置 ssh 密钥的说明:

改进浏览 *netrw-listhack* *netrw-ssh-hack* {{{2

尤其是用远程目录浏览器,不断输入密码 很乏味。

针对Linux/Unix系统,《Linux Server Hacks - 100个工业实力》一书 提示和工具”作者 Rob Flickenger(O'Reilly,ISBN 0-596-00461-3)给出了一个提示 用于设置无密码 ssh 和 scp 并讨论相关的安全性 问题。它曾经可以在http://hacks.oreilly.com/pub/h/66 http://hacks.oreilly.com/pub/h/66, 但显然该地址现在被重定向到一些“黑客杂志”。 我将尝试根据该文章和来自的通信进行总结 本·施密特:

(1) 在本机生成公私钥对 (ssh客户端):

  ssh-keygen -t rsa

(根据提示将文件保存到~/.ssh/id_rsa中)

(2) 当要求输入密码时,只需点击(两次)即可,无需输入密码 密码。如果您确实使用密码,您还需要使用 ssh-agent,因此您只需在每个会话中输入一次密码。 如果您不使用密码,只需登录本地 计算机或以任何方式访问密钥文件就足够了 访问任何拥有该密钥授权登录的 ssh 服务器。

(3) 这会创建两个文件:

  ~/.ssh/id\_rsa
  ~/.ssh/id\_rsa.pub

(4)在目标机(ssh服务器)上:

 cd
 mkdir -p .ssh
 chmod 0700 .ssh

(5) 在本地机器上(ssh客户端):(一行)

 ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys2' < ~/.ssh/id_rsa.pub

或者,对于 OpenSSH,(一行)

 ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys' < ~/.ssh/id_rsa.pub

你可以用以下方法测试一下

 ssh {serverhostname}

您应该登录到服务器计算机,而无需进一步键入 任何事物。

如果您决定使用密码,请执行以下操作:

 ssh-agent $SHELL
 ssh-add
 ssh {serverhostname}

当您使用 ssh-add 时,系统会提示您输入密钥密码,但不会 随后当您使用 ssh 时。要与 vim 一起使用,您可以使用

 ssh-agent vim

并且,当接下来在 vim 中时,使用

 :!ssh-add

或者,您可以将 ssh-agent 应用到您计划使用的终端 运行 vim:

 ssh-agent xterm &

并在需要时执行 ssh-add 。

对于 Windows,vim 邮件列表上的人们提到 Pageant 可以帮助 避免经常需要输入密码。

Kingston Fung 写了另一种避免不断需要输入的方法 密码:

为了避免每次都需要输入 scp 密码,您 在文档中提供了一个设置无密码 ssh 帐户的技巧。我找到了一个 更好的方法:我可以使用常规 ssh 帐户,该帐户使用 密码即可访问资料,无需输入密码 每一次。这对于安全性和便利性都有好处。我尝试过 ssh 公钥 授权+ ssh-agent,实现这个,它有效!这里有两个 附有说明的链接:

  • http://www.ibm.com/developerworks/library/l-keyc2/ http://www.ibm.com/developerworks/library/l-keyc2/
  • http://sial.org/howto/openssh/publickey-auth/ http://sial.org/howto/openssh/publickey-auth/

要在远程系统上进行制作,您需要设置makeprg变量为 做一个 ssh make。从:help makeprg

用于“:make”命令的程序。请参阅 |:make_makeprg|。 该选项可能包含“%”和“#”字符,它们被扩展为 当前文件名和备用文件名。 |:_%| |:_#| 环境变量被扩展|:set_env|。请参阅|选项反斜杠| 关于包含空格和反斜杠。

请注意,一个“|”必须转义两次:一次用于“:set”,一次用于 命令的解释。当您使用名为的过滤器时 “myfilter”这样做:

 :set makeprg=gmake\ \\\|\ myfilter

可以给出(甚至多次)占位符“$*”来指定 其中将包含参数,例如:

 :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}

无法从 |modeline| 设置此选项或在|沙箱|中,对于 安全原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程编程 的相关文章

随机推荐