Neutralize Pesky Miscreants

    gulp-sftp

    0.1.5 • Public • Published

    gulp-sftp Build Status

    Upload files via SSH

    Useful for uploading and deploying things via sftp. Right now this plugin just uploads everything. Caching and hash comparison are two TODO items.

    NPM

    Install

    $ npm install --save-dev gulp-sftp

    Usage

    var gulp = require('gulp');
    var sftp = require('gulp-sftp');
     
    gulp.task('default', function () {
        return gulp.src('src/*')
            .pipe(sftp({
                host: 'website.com',
                user: 'johndoe',
                pass: '1234'
            }));
    });

    API

    sftp(options)

    options.host

    Required
    Type: String

    options.port

    Type: Number
    Default: 22

    options.user

    Type: String
    Default: 'anonymous'

    options.pass

    Type: String
    Default: null

    If this option is not set, gulp-sftp assumes the user is using private key authentication and will default to using keys at the following locations:

    ~/.ssh/id_dsa and /.ssh/id_rsa

    If you intend to use anonymous login, use the value '@anonymous'.

    options.remotePath

    Type: String
    Default: '/'

    The remote path to upload to. If this path does not yet exist, it will be created, as well as the child directories that house your files.

    options.remotePlatform

    Type: String Default: 'unix'

    The remote platform that you are uploading to. If your destination server is a Windows machine, use the value windows.

    options.key

    type String or Object Default: null

    A key file location. If an object, please use the format {location:'/path/to/file',passphrase:'secretphrase'}

    options.passphrase

    type String Default: null

    A passphrase for secret key authentication. Leave blank if your key does not need a passphrase.

    options.keyContents

    type String Default: null

    If you wish to pass the key directly through gulp, you can do so by setting it to options.keyContents.

    options.auth

    type String Default: null

    An identifier to access authentication information from .ftppass see Authentication for more information.

    options.authFile

    type String Default: .ftppass

    A path relative to the project root to a JSON formatted file containing auth information.

    options.timeout

    type int Default: Currently set by ssh2 as 10000 milliseconds.

    An integer in milliseconds specifying how long to wait for a server response.

    options.agent

    type String Default: null

    Path to ssh-agent's UNIX socket for ssh-agent-based user authentication.

    options.agentForward

    type bool Default: false

    Set to true to use OpenSSH agent forwarding. Requires that options.agent is configured.

    options.callback

    type function Default: null

    Callback function to be called once the SFTP connection is closed.

    Authentication

    For better security, save authentication data in a json formatted file named .ftppass (or to whatever value you set options.authFile to). Be sure to add this file to .gitignore. You do not typically want auth information stored in version control.

    var gulp = require('gulp');
    var sftp = require('gulp-sftp');
     
    gulp.task('default', function () {
        return gulp.src('src/*')
            .pipe(sftp({
                host: 'website.com',
                auth: 'keyMain'
            }));
    });

    .ftppass

    {
      "keyMain": {
        "user": "username1",
        "pass": "password1"
      },
      "keyShort": "username1:password1",
      "privateKey": {
        "user": "username"
      },
      "privateKeyEncrypted": {
        "user": "username",
        "passphrase": "passphrase1"
      },
      "privateKeyCustom": {
        "user": "username",
        "passphrase": "passphrase1",
        "keyLocation": "/full/path/to/key"
      }
    }

    Known Issues

    SFTP error or directory exists: Error: No such file /remote/sub/folder

    Version 0.1.2 has an issue for Windows clients when it comes to resolving remote paths. Please upgrade to 0.1.3.

    Error:: SFTP abrupt closure

    Some conditions can cause the ssh2 connection to abruptly close. The issues that commonly cause this are large files (though they are checked for and are automatically converted to streams) and heavy memory usage.

    To solve problems related to ssh2 closures, try to use streams instead of buffers. Do this by passing {buffer:false} as an option with gulp.src. This isn't always an option, so I would suggest exploring ways to move between streams and buffers. Lars Kappert has a great article on managing this.

    Some awesome work via @mscdex addressed this issue. Please make sure you have the latest version or greater of gulp-sftp (0.1.1) and the latest version or greater of ssh2 (0.3.4) and you should not see abrupt disconnects with large files.

    License

    MIT

    Install

    npm i gulp-sftp

    DownloadsWeekly Downloads

    836

    Version

    0.1.5

    License

    MIT

    Last publish

    Collaborators

    • gtg092x