6

fabricラックスペースサーバーにアプリをリモートデプロイするために使用しています。自宅のコンピューターで同じOS(Ubuntu Server 10.04)を使用して仮想マシンでスクリプトを試しましたが、すべて機能しているようです。

不思議なことに、すべてのputファブリックコマンドは実サーバーで失敗します。他のすべてのコマンド(run、、、cdなどsudo)は正常に機能しているようです。

これは、この特定のサーバーをターゲットにしている場合にのみ発生します。これは、私が実行するコマンドです。

fab test --host remote-server

remote-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か?

4

2 に答える 2

8

sftp@Drakeのおかげで、リモートマシンのサーバーに問題があることがわかりました。

これをテストするには:

$ 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

sshサービスに移動し/etc/ssh/sshd_configて再起動します( )。/etc/init.d/ssh restartしかし、ラインはすでにそこにあり、機能していませんでした。

次に、 http://forums.debian.net/viewtopic.php? f = 5&t = 42818を読んだ後、その行を次のように変更しました。

Subsystem sftp internal-sftp

サービスを再起動し、ssh現在は機能しています。

$ sftp remote-server
Connected to remote-server
sftp>
于 2012-04-19T14:03:12.550 に答える
3

私も同じ問題を抱えていました。サーバーに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-server
于 2012-07-04T06:04:10.537 に答える