Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 无法初始化SFTP协议。主机是否运行SFTP服务器?WinSCP错误_Windows_Ssh_Sftp_Winscp - Fatal编程技术网

Windows 无法初始化SFTP协议。主机是否运行SFTP服务器?WinSCP错误

Windows 无法初始化SFTP协议。主机是否运行SFTP服务器?WinSCP错误,windows,ssh,sftp,winscp,Windows,Ssh,Sftp,Winscp,当我尝试SSH到集群中时,有两个阶段。因此,我必须输入两次密码才能在Linux终端或PuTTY中使用SSH进入我的主目录 但当我尝试使用WinSCP时,会出现以下错误: 正在尝试SFTP: 无法初始化SFTP协议。主机是否运行SFTP服务器 正在尝试SCP: 跳过启动消息时出错。您的shell可能与应用程序不兼容(建议使用BASH) 如何绕过此问题?有关一般信息,请阅读有关错误消息的文档 尽管对于您的特定情况,问题可能是由于服务器无法与WinSCP对话以交换第二个密码引起的。第二个密码是什么?s

当我尝试SSH到集群中时,有两个阶段。因此,我必须输入两次密码才能在Linux终端或PuTTY中使用SSH进入我的主目录

但当我尝试使用WinSCP时,会出现以下错误:

正在尝试SFTP:

无法初始化SFTP协议。主机是否运行SFTP服务器

正在尝试SCP:

跳过启动消息时出错。您的shell可能与应用程序不兼容(建议使用BASH)


如何绕过此问题?

有关一般信息,请阅读有关错误消息的文档

尽管对于您的特定情况,问题可能是由于服务器无法与WinSCP对话以交换第二个密码引起的。第二个密码是什么?
sudo
?还是到第二个“阶段”的SSH隧道(不管是什么)

有关
sudo
/
su
,请参阅WinSCP常见问题解答

有关隧道,请参阅文档


我知道这个答案有点模糊,但你的问题也是。如果您描述这两个密码的用途,如果您共享会话日志文件,您可能会得到更好的答案。

两种类型的密码称为键盘交互密码

您可以通过以下方式轻松禁用它:

  • 转到/etc/ssh/sshd\u config
  • 设置ChallengeResponseAuthentication=false
  • 然后通过服务sshd restart重新启动ssh服务

实际上,这种错误在某些情况下可能会产生误导。假设SSH可以工作(对您来说就是这样),那么很可能是bash输出了一些破坏SCP的文本

一旦SSH进入系统,是否会打印一些文本?(例如一些欢迎文本)。如果是这种情况,您可以在
~/.bashrc
中进行测试(或者在某些系统上先加载的任何脚本,如
~/.bash\u profile
),并检查shell是否是交互式的。如果不是交互式的,请不要打印任何内容。您可以使用此选项跳过打印任何内容(将其放在
.bashrc
的开头):


在Winscp中,我刚刚将文件协议选项从“SFTP”更改为“SCP”,文件传输现在开始工作


我也遇到了同样的问题,但我刚刚将文件协议从SFTP切换到了常规FTP,它起到了作用。

虽然您通常是对的,但在这种情况下不太可能出现这种情况。WinSCP通过身份验证成功,否则它甚至无法尝试启动SFTP。OP必须表示其他一些“密码”,而不是SSH的密码。您的问题是关于问题中的错误消息。但是问题是关于操作“必须输入两次密码才能进入我的主目录”,如果我理解正确,Putty就是这样。登录不能与WinSCP一起使用,我收到了相同的错误。我提供的解决方案解决了我的问题。我希望它能帮助别人。
#Detect if in SCP
if [ -z "$PS1" ]; then
    return
fi