我已经在 Windows 机器上从可选功能安装了 openssh-server。我可以从我的 Linux 机器上 ssh 和 scp(我只需要上传);但是我不喜欢 cmd shell,所以我安装了 Cygwin 并将其设置为 openssh-server 的默认 shell(为 openssh 配置 shell)。现在 ssh 可以工作,但 scp 不行(同样来自我的 Linux 机器)。scp 挂起,直到我用 Ctrl+c 中断它,并且没有文件传输。当我使用-v
option 运行它时,它挂起debug1: Sending command: scp -v -r -t /tmp/
此行为 100% 可重现,并且在 cmd 和 Cygwin.bat 之间切换 openssh-server shell 始终会给出解释的结果。
我记得在某处读过:shell 不应该回显任何内容,否则它将无法与 scp 一起使用,我检查了 ~/.bashrc 和 ~/.profile 并没有看到任何打印出来。
我set TERM=linux
在 Cygwin.bat 中尝试过,但没有帮助。
我试图在 Cygwin.bat 中找到一种方法来区分 scp 和 ssh,但是找不到方法(我的目标是不为 scp 启动 Cygwin64/bin/bash.exe)。
谢谢阅读。
答案1
我从文件中的命令中删除--login
开关后,一切如预期。bash
cygwin.bat
scp
我认为删除此开关会阻止.profile
脚本执行,我scp
在此文件中找不到任何冲突的内容,因此也可能存在其他行为变化。