【问题标题】:Neovim scp doesn't prompt for passwordNeovim scp 不提示输入密码
【发布时间】:2019-02-15 05:39:26
【问题描述】:

在 Vim 中,这会提示我输入允许我编辑远程文件的密码:

:e scp://username@host//path

然而,在 NeoVim 中使用相同的命令不会提示输入密码,因为底层命令 :! scp user@host:path LOCAL-TEMPFILE 在 NeoVim 中不能以交互方式工作:https://github.com/neovim/neovim/wiki/FAQ#-and-system-do-weird-things-with-interactive-processes

使用通过 ssh 进行密码验证的 NeoVim 编辑远程文件的最佳做法是什么?

【问题讨论】:

    标签: vim scp neovim


    【解决方案1】:

    我猜想提供此功能的 netrw 插件没有为 Neovim 安装/激活。检查:Nread命令是否可用。比较 Vim 和 Neovim 的 :scriptnames 输出。阅读插件的文档:help pi_netrw 了解如何安装和启用它。

    更新:所以,原来有一个Neovim issue 带有从:! 开始的交互式命令,这就是netrw 正在做的事情;该插件不捕获密码质询。基本上是在执行:! scp user@host:path LOCAL-TEMPFILE

    如果您可以避免该问题(对主机使用基于密钥的 SSH 身份验证),您可以继续使用带有 netrw 的 Neovim。如果这对您真的很重要,则可以使用更详细的解决方法。 (例如,我在ssh 周围使用了一个包装器,它解析~/.ssh/config 以获取自定义Password Hunter2 条目(这些密码在组织中众所周知,仅用于测试VM,因此这里没有安全问题),然后使用@ 987654331@自动登录。)

    否则,您必须切换到经典 Vim 进行 netrw 操作,或使用其他方式访问这些远程文件(例如 SSHFS)。

    【讨论】:

    • netrw 和 :Nread 的 shell 退出为 1。因此,底层命令是 scp 'user@host:path' '/some/temp/path';在 vim 中会提示输入密码,但在 nvim 中没有提示输入密码,相反我看到 3 次“尝试”使用 ssh 登录。所以看来问题在于捕获密码挑战
    • 啊,这是您应该添加到问题中的重要信息。
    • netrw 插件不捕获密码质询。它基本上是在执行:! scp user@host:path LOCAL-TEMPFILE。请在 nvim 中手动尝试该命令。如果没有密码提示,说明 nvim 有问题。
    • 我猜问题是 :! [cmd] 在 neovim github.com/neovim/neovim/wiki/… 中不能交互工作
    • 啊,很好的发现;我想你是正确的!不幸的是,这只留下了一些解决方法。我用调查结果和一些建议扩展了我的答案。如果您同意,请接受。
    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2013-11-24
    • 2014-07-07
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多