我正在使用fabric在rackspace服务器上远程部署我的应用程序。我在我的家用电脑上使用相同的操作系统(Ubuntu Server 10.04)在虚拟机上测试了我的脚本,它们似乎都能工作。
奇怪的是,所有put fabric命令在真实服务器上都会失败。所有其他命令(run、cd、sudo等)似乎都工作正常。
这仅在针对此特定服务器时发生,这是我执行的命令:
fab test --host remote-serverremote-server是我.ssh/config上的一个别名。我的fabfile文件:
@task
def test():
sudo("echo testing")
put("/tmp/file.txt", "/tmp/")tmp/test_file.txt只是我在测试中使用的一个文本文件
这是输出
[remote-server] Executing task 'test'
[remote-server] sudo: echo testing
[remote-server] out: testing
Traceback (most recent call last):
File "/home/user/env/lib/python2.6/site-packages/fabric/main.py", line 712, in main
*args, **kwargs
File "/home/user/env/lib/python2.6/site-packages/fabric/tasks.py", line 298, in execute
multiprocessing
File "/home/user/env/lib/python2.6/site-packages/fabric/tasks.py", line 197, in _execute
return task.run(*args, **kwargs)
File "/home/user/env/lib/python2.6/site-packages/fabric/tasks.py", line 112, in run
return self.wrapped(*args, **kwargs)
File "/home/user/project/fabfile/__init__.py", line 33, in test
put("/tmp/file.txt", "/tmp/")
File "/home/user/env/lib/python2.6/site-packages/fabric/network.py", line 457, in host_prompting_wrapper
return func(*args, **kwargs)
File "/home/user/env/lib/python2.6/site-packages/fabric/operations.py", line 338, in put
ftp = SFTP(env.host_string)
File "/home/user/env/lib/python2.6/site-packages/fabric/sftp.py", line 20, in __init__
self.ftp = connections[host_string].open_sftp()
File "/home/user/env/lib/python2.6/site-packages/ssh/client.py", line 399, in open_sftp
return self._transport.open_sftp_client()
File "/home/user/env/lib/python2.6/site-packages/ssh/transport.py", line 844, in open_sftp_client
return SFTPClient.from_transport(self)
File "/home/user/env/lib/python2.6/site-packages/ssh/sftp_client.py", line 105, in from_transport
chan.invoke_subsystem('sftp')
File "/home/user/env/lib/python2.6/site-packages/ssh/channel.py", line 240, in invoke_subsystem
self._wait_for_event()
File "/home/user/env/lib/python2.6/site-packages/ssh/channel.py", line 1114, in _wait_for_event
raise e
ssh.SSHException: Channel closed.
Disconnecting from root@server.com... done.我需要在远程服务器上配置什么才能使用put发送文件吗
发布于 2012-04-19 22:03:13
多亏了@Drake,我才发现远程机器上的sftp服务器有问题。
要进行此测试,请执行以下操作:
$ sftp remote-server
subsystem request failed on channel 0
Couldn't read packet: Connection reset by peer我读到为了启用sftp,我需要添加下面这行
Subsystem sftp /usr/lib/openssh/sftp-server执行/etc/ssh/sshd_config并重新启动(/etc/init.d/ssh restart) ssh服务。但是那条线已经在那里了,它不能工作。
然后,在阅读了http://forums.debian.net/viewtopic.php?f=5&t=42818之后,我将这一行改为
Subsystem sftp internal-sftp已重新启动ssh服务,现在该服务正在运行:
$ sftp remote-server
Connected to remote-server
sftp>发布于 2012-07-04 14:04:11
我也有同样的问题。我发现我的服务器上没有安装sftp。我安装了openssh并重启了sshd服务。
yum -y install openssh
service sshd restart然后我也遇到了同样的问题。我检查了系统日志/var/ log /messages。我发现了以下错误
Jul 3 04:23:20 <ip> sshd[13996]: subsystem request for sftp
Jul 3 04:23:20 <ip> sshd[13996]: error: subsystem: cannot stat /usr/libexec/sftp- server: No such file or directory
Jul 3 04:23:20 <ip> sshd[13996]: subsystem request for sftp failed, subsystem not found我在"/usr/libexec/openssh/ sftp-server“中找到了我的sftp-server位置,而脚本正在查找"/usr/libexec/sftp-server”位置,我创建了符号链接,我的问题得到了解决。
root@<ip> fabric]# locate sftp-server
/usr/libexec/openssh/sftp-server
/usr/share/man/man8/sftp-server.8.gz
ln -s /usr/libexec/openssh/sftp-server /usr/libexec/sftp-serverhttps://stackoverflow.com/questions/10221839
复制相似问题