Net::SSH ライブラリを使用してファイルのパーミッションを正しく設定するのに問題があります。ファイルの作成後にファイルのアクセス許可を正しく設定できますが、ファイルが作成されたインスタンスで正しいアクセス許可を持つ必要があります。Ubuntu マシンに接続していますが、ssh ユーザーはディレクトリで完全な権限を持っています。
これは、失敗した場所を示すコードの簡略化されたバージョンです。
Net::SFTP.start('servername', 'username', :password => 'password') do |sftp|
file_handle = sftp.open!('/remote/file/path', 'w', :permissions => 0777)
# file has permissions 0755, but should have 0777
sftp.fsetstat!(file_handle, {:permissions => 0777})
# file now has correct 0777 permissions
...
end