今天装了个CentOS 6.0的虚拟机,不知道是否因为选了“basic server”安装的原因
putty能够正常访问,但是用winscp连接是时候却出现了如下错误
“无法初始化SFTP协议。主机是SFTP服务器吗?”
到网上找也没找到一个可靠的解决方法,甚至下载了最新版本的winscp也照旧
后来在winscp官方网站看到有人说是不是协议没有选成sftp
但是看了我的却是已经默认选了sftp,而且,我也试过从另一个linux用scp命令是OK的
所以我试着把sftp换成scp协议,竟然成功了,接着上传文件也成功。
总结:具体原因未知,希望有高手知道的可以回复一下,谢谢
有碰到同样问题的也可以试一下我的办法
2011-11-10 补充 方案二
下载最新的openssh portable源码包,编译安装
此处必须用portable版本
并将旧的rpm包卸载:
rpm -e openssh openssh-server openssh-clients
rm -rf /etc/ssh
再源码安装
重新启动sshd,彻底解决问题。sftp协议又可以用了
方案二的方式在使用过程中发现还是有问题:
这个服务脚本不能通过chkconfig加入服务,所以不能开机启动
改了脚本可以启动了,也会总是报密码错误而无法登陆。但是重启sshd却又能登陆了
2011-11-14 补充 方案三
下载openssh 5.5的rpm源码包openssh-5.5p1-24.fc14.2.src.rpm
rpmbuild -D no_gtk2=1 -D skip_gnome_askpass=1 --rebuild openssh-5.5p1-24.fc14.2.src.rpm
# 再用rpm命令卸载旧版本
rpm -e openssh openssh-server openssh-clients
rm -rf /etc/ssh/
# 安装自己编译的版本
rpm -ivh /root/rpmbuild/RPMS/x86_64/openssh-5.5p1-24.el6.2.x86_64.rpm /root/rpmbuild/RPMS/x86_64/openssh-clients-5.5p1-24.el6.2.x86_64.rpm /root/rpmbuild/RPMS/x86_64/openssh-server-5.5p1-24.el6.2.x86_64.rpm /root/rpmbuild/RPMS/x86_64/openssh-ldap-5.5p1-24.el6.2.x86_64.rpm /root/rpmbuild/RPMS/x86_64/pam_ssh_agent_auth-0.9.2-26.24.el6.2.x86_64.rpm
# 重启sshd
service sshd restart
2011-11-14 补充 方案四
这是从新浪学来的一个非常规的办法,具体方法如下
修改 /etc/ssh/sshd_config,将
Subsystem sftp /usr/libexec/openssh/sftp-server
修改为:
Subsystem sftp /usr/lib/openssh/sftp-server
/usr/lib/openssh/sftp-server是一个不存在路径
这样的结果是导致无法启动sftp,导致用其它方式代替,比如scp
# 删除旧key
vi -f /etc/ssh/ssh_host_*
# 重启sshd
service sshd restart
这样winscp也能连接上,但是肯定不是用的sftp协议