Accounts High Performance Computing Systems Visualization Facilities Software
Systems System Utilities File Transfer Remote Connectivity Remote Display
Software Development / Programming Support
Seminars Workshops Tutorials User Groups Case Studies White Papers

Command Line SSH User Guide

SSH is a secure protocol that encrypts all data sent between the client computer and the computer it is connecting to. SSH applications usually allow both interactive terminal sessions on the remote machine and the ability to transfer files securely.

This guide is intended as a very basic introduction to using command line SSH commands. A lot more information on using SSH can be found online, in books, and in the man pages for each individual SSH command.

Opening a Terminal on a Remote Machine through SSH

The command line SSH command to open a terminal on a remote machine is just called ssh. The syntax to connect to a remote machine is:

ssh username@hostname

where username is the name of your account on the remote system and hostname is the hostname of the remote system that is being connected to.

The following is an example of the user abc123 connecting to the Lion-X cluster lionxj.rcc.psu.edu.

[abc123@funkmachine ~]$ ssh abc123@lionxj.rcc.psu.edu
abc123@lionxj.rcc.psu.edu's password: password
[abc123@lionxj ~]$

The "[abc123@lionxj ~]$" prompt now shows that user abc123 is logged in to lionxj.

Transferring Files with SSH

There are two main command-line SSH commands to transfer files: scp and sftp. scp is a non-interactive command that takes a set of files to copy on the command line, copies them, and exits. sftp is an interactive command that opens a persistent connection that multiple copying commands can be performed through.

  1. scp

    To copy one or more local files up to a remote server, the scp syntax would be:

    scp local_file(s) user@hostname:destination_directory
    • Example: copy individual files to a remote system

      For user abc123 to copy the local files foo.c and foo.h into their home directory on the host lionxj.rcc.psu.edu, the following command would be used:

      [abc123@funkmachine ~]$ scp foo.c foo.h abc123@lionxj.rcc.psu.edu:.
      abc123@lionxj.rcc.psu.edu's password: password
      foo.c                               100%  122     0.1KB/s   0.1KB/s   00:00
      foo.h                               100%   14     0.0KB/s   0.1KB/s   00:00
    • Example: copy a whole directory to a remote system

      For a user to copy a whole directory called srcdir including all of its contents into their home directory on the host hammer.rcc.psu.edu, the -r flag can be added to the scp command. The -r flag tells scp to recursively descend into a directory and copy all of its contents.

      [abc123@funkmachine ~]$ scp -r srcdir abc123@hammer.rcc.psu.edu:.
      abc123@lionxj.rcc.psu.edu's password: password
      bork.c                              100%  388     0.4KB/s  22.0KB/s   00:00    
      swap2.c                             100%  199     0.2KB/s  22.0KB/s   00:00    
      list.c                              100% 1029     1.0KB/s  22.0KB/s   00:00    
      array.c                             100%  536     0.5KB/s  22.0KB/s   00:00    
      foo.c                               100%  122     0.1KB/s  22.0KB/s   00:00    
      acid.c                              100%  446     0.4KB/s  22.0KB/s   00:00    
      blah.c                              100%  112     0.1KB/s  22.0KB/s   00:00
    • Example: copy files down from a remote system

      To copy files from a remote system down to a local machine, the order of the scp command just needs to be reversed so that the first argument (the source argument) is the remote system and the second argument (the destination argument) is a directory on the local system.

      For user abc123 to copy the remote file results.txt on the server lionxi.rcc.psu.edu into their current directory on their local machine, the following command would be used:

      scp jwh128@lionxi.rcc.psu.edu:results.txt .
      abc123@lionxj.rcc.psu.edu's password: password
      results.txt                         100%    8     0.0KB/s   0.0KB/s   00:00

  2. sftp

    sftp is an interactive command that uses the same syntax as a standard command-line ftp client. It differs from a standard ftp client in that the authentication and the data transfer happen through the SSH protocol rather than the FTP protocol. The SSH protocol is encrypted whereas the FTP protocol is not.

    There are a number of basic commands that are used inside of stfp:

    • put filename: uploads the file filename

    • get filename: downloads the file filename

    • ls: lists the contents of the current remote directory

    • lls: lists the contents of the current local directory

    • pwd: returns the current remote directory

    • lpwd: returns the current local directory

    • cd directory: changes the current remote directory to directory

    • lcd directory: changes the current local directory to directory

    The syntax for calling sftp is:

    sftp username@hostname
    • Example sftp session

      [abc123@funkmachine ~]$ sftp abc123@lionxi.rcc.psu.edu
      Connecting to lionxi.rcc.psu.edu...
      abc123@lionxi's password: password
      sftp> pwd
      Remote working directory: /gpfs/home/jwh128
      sftp> lpwd
      Local working directory: /home/jwh128
      sftp> cd work/depot
      sftp> pwd
      Remote working directory: /gpfs/work/jwh128/depot
      sftp> lcd results
      sftp> lpwd
      Local working directory: /home/jwh128/results
      sftp> ls -l
      -rw-r--r--    1 root     root            5 Mar  3 12:08 dump
      sftp> lls -l
      total 0
      sftp> get dump
      Fetching /gpfs/work/jwh128/depot/dump to dump
      /gpfs/work/jwh128/depot/dump        100%    5     0.0KB/s   0.0KB/s   00:00    
      sftp> lls -l
      total 4
      -rw-r--r-- 1 jwh128 jwh128 5 Mar  3 12:09 dump
      sftp>