【已解决】Windows下tramp怎么使用

之前一直在linux中使用tramp, 如何在windows 中利用tramp呢?我没有安装cygwin, 需要安装putty或者openssh么?怎么设置呢?

已解决,需要下载plink.exe等putty的执行程序,添加到windows的环境变量,设置tramp-default-method 为plink即可。登录是:

/plink: usernm@remotehost:filedir
5 个赞

多谢! plink的确解决了我的问题,但是问题是我现在还没有搞懂为什么ssh在win上面不工作。

C-x C-f /plink:… ?

我很久不用windows了, 我想应该是 c-x c-f 下 双斜线进入根路径下。

;; *** 使用 ssh 相关方法的设置
;; 使用 ssh 的相关 tramp 方法有: ssh, sshx, scp, scpx
;;
;; 1. ssh 和 scp 两种 tramp 方法会让 emacs 卡死,原因可能和 cygwin 遇到
;;    的情况类似:
;;
;;    #+BEGIN_EXAMPLE
;;    Pseudo-terminal will not be allocated because stdin is not a terminal.
;;    #+END_EXAMPLE
;;
;;    具体请参考 Tramp 文档的相关章节: "Issues with Cygwin ssh"
;;    https://www.gnu.org/software/tramp/
;;
;; 2. sshx 和 scpx 可以正常使用,大文件访问使用 scpx 方法速度比较快。
;; 3. 建议使用 key + ssh-agent 的方式登录,具体设置方法请自行搜索。
;;
;;    下面是一个启动 ssh-agent 的脚本,调整以下贴到 ~/.bashrc 文件就可以了。
;;
;;    #+BEGIN_SRC shell
;;    if [ -f ~/.agent.env ]; then
;;        . ~/.agent.env >/dev/null
;;        if ! kill -0 $SSH_AGENT_PID >/dev/null 2>&1; then
;;            echo "Stale agent file found. Spawning new agent..."
;;            eval `ssh-agent |tee ~/.agent.env`
;;            ssh-add
;;        fi
;;    else
;;        echo "Starting ssh-agent..."
;;        eval `ssh-agent |tee ~/.agent.env`
;;        ssh-add
;;    fi
;;    #+END_SRC
;;
;; *** 使用 Putty 相关方法的设置
;; 使用 putty 的 tramp 方法有四种: plink, plinks, pscp 和 psftp
;;
;; putty 在 window 平台下有图形界面,使用起来很方便,推荐使用,
;; 但 putty, msys2 和 termux 三者配合需要做一些配置。
;;
;; 1. 安装 putty, plink 和 ssh-pageant 三个外部程序:
;;
;;    #+BEGIN_EXAMPLE
;;    pacman -Ss mingw-w64-i686-putty mingw-w64-i686-putty-ssh ssh-pageant-git
;;    #+END_EXAMPLE
;;
;; 2. 在 msys2 的 .bashrc 中设置环境变量: MSYS2_ARG_CONV_EXCL, 比如:
;;
;;    #+BEGIN_EXAMPLE
;;    export MSYS2_ARG_CONV_EXCL="192.168.137.250:;[email protected]:"
;;    #+END_EXAMPLE
;;
;;    这个设置的意思是:在调用命令时,所有以 "192.168.137.250:" 或者
;;    "[email protected]:" 开头的命令参数,都保持原样,不要作 msys2
;;    文件路径转换,比如:
;;
;;    #+BEGIN_EXAMPLE
;;    pscp [email protected]:/test.org ~/test.org
;;    #+END_EXAMPLE
;;
;;    这个命令中 "[email protected]:/test.org" 这个参数实例将被保护,
;;    不作转换。
;;
;;    这个步骤对于 pscp 和 psftp 两个 tramp 方法非常重要, 不然 pscp 会报错:
;;    "ssh_init Host does not exit"
;;
;;    想了解具体细节同学可以阅读:
;;    1. https://github.com/msys2/msys2/wiki/Porting#user-content-filesystem-namespaces
;;    2. https://stackoverflow.com/questions/41789559/how-to-prevent-msys-from-converting-remote-file-path-for-pscp
;;
;; 3. 设置 putty, 最好设置为免密码登录,比如:key + ssh-pageant 的方式。
;;    具体方法请自行搜索。
;; 4. 将 "C:\msys32\mingw32\bin\pageant.exe" 的快捷方式添加到启动菜单。
;;    更改快捷方式的目标:
;;
;;    #+BEGIN_EXAMPLE
;;    C:\msys32\mingw32\bin\pageant.exe YOUR-PUTTY-KEY-PATH
;;    #+END_EXAMPLE
;;
;; 5. 如果用户使用 plinkx 方法, 还需要设置保存一个 putty session, 这个
;;    putty session 的名字与 host 的名字一致, 比如用 tramp 访问:
;;
;;    #+BEGIN_EXAMPLE
;;    /plinkx:192.168.1.101:/
;;    #+END_EXAMPLE
;;
;;    就需要设置保存一个名字为 "192.168.1.101" 的 putty session .
3 个赞

能再问一下吗? 我在windows下利用find-file无法进入tramp-mode, 只会提示我打开了一个如 plink:113.xxx.xxx.xxx的新文件. 毕竟Windows下是没有 / 这个根目录的, 只 E:/这种盘符根目录

Hi, 很久不用Windows了, 在C-x C-f 后,连续敲击两个//, 不会有类似根目录的显示么? 另外,我看你的楼上给出的答案非常详细,这个可以么?

1 个赞

非常感谢回应, 我一直漏打了倒数第二个:, 加上了就成功远程连接了!!

Tramp 原来这么好用,本地编辑远程主机的文件。 Windows系统下安装putty 就有plink了。

choco install putty

C-x, C-f 后输入:

/plink: username@remotehost:filePath
例如:/plink:[email protected]:/home/test.json
1 个赞