Limitless

"I never am really satisfied that I understand anything; because, understand it well as I may, my comprehension can only be an infinitesimal fraction of all I want to understand about the many connections and relations which occur to me, how the matter in question was first thought of or arrived at, etc., etc.".
(Ada Lovelace)

LinuxBanner

SSH

SSH ("Secure Shell") is a protocol for securely accessing one computer from another.
Despite the name, SSH allows you to run command line and graphical programs, transfer files, and even create secure virtual private networks over the Internet. To use SSH, you will need to install an SSH client on the computer you connect from, and an SSH server on the computer you connect to. The most popular Linux SSH client and Linux SSH server are maintained by the OpenSSH project.
All modern Unix-like systems (Linux, BSDs, and others) include a command-line ssh client. To login to your computer from a Unix-like machine, go to a command-line and type:



ssh username@IP_address #FOR EXAMPLE ssh shady@192.168.0.15 #Specifying the port if the server is listening on a different one (from the standard 22) ssh -P 220 shady@192.168.0.15

From Windows I would like to suggest to use the popular graphical SSH client, PuTTY. You can download the Windows client from here

putty

SCP

SCP allows files to be copied to, from, or between different hosts. It uses ssh for data transfer and provides the same authentication and same level of security as ssh. As every Unix command, for all flags, the best way is to check the manual page.


man scp



SCP: From "Remote" to "Local"


scp username@IP_address:FILENAME_TO_GET.txt /some/local/directory #We will copy from a server with IP 192.168.0.15 all files .txt from the server folder /home/shady/p1 #to the client folder /home/Dennis/stuff scp shady@192.168.0.15:/home/shady/p1/*.txt /home/Dennis/stuff #Specifying the port scp -P220 shady@192.168.0.15:/home/shady/p1/*.txt /home/Dennis/stuff #rsync instead of SCP, in order to watch the progress and recover in case of fail transfer. rsync -avz -e 'ssh -p 1716' --progress shady@192.168.0.15:/home/shady/p1/* /home/Dennis/stuff



SCP: From "Local" to "Remote"


scp Local_file_To_Transfer username@Server_IP:/some/remote/directory #We are going to copy from Local pc to a remote Server #a file called Debian_8_x64.iso scp Debian_8_x64.iso shady@192.168.0.15:/home/Dennis/ISO #Specifying the port scp -P 1716 Debian_8_x64.iso shady@192.168.0.15:/home/Dennis/ISO #With Rsync rsync -avz /localPATH/ shady@192.168.0.15:/home/Dennis/ISO #In order to see the progree of copy add the flag --progress #and if we need to use a different port (instead of the standard 22) rsync -avz -e 'ssh -p 1716' --progress Debian_8_x64.iso shady@192.168.0.15:/home/Dennis/ISO



SCP: From "Remote" to "Remote"


scp your_username@SERVER1:/some/remote/directory/fileToTransfer.txt \ your_username@SERVER2:/some/remote/directory/



SFTP: Bi-directional, with Filezilla-Client

FileZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.
SFTP means SSH File Transfer Protocol. So we can use our SSH credential in order to connect to the server using this protocol. You can download the sources and the binary files here.
Otherwise you can download and install it from the official repository:


#Debian / Ubuntu distros apt-get install filezilla #RedHat, Centos distros yum -y install filezilla

filezillaClientfilezillaClient

Now Let's do our first SSH connection using our personal account


############# # ADA USERS # ############# ############## # ALAN USERS # ##############



A simple script that copy a file from local to remote

Copy and paste this script into your pc and set chmod +x


#if you will call this file # remtolocal.sh chmod 744 remtolocal.sh




#!/bin/bash #this is just a check to avoid to use the ROOT user if [ "$EUID" -eq 0 ] then echo "Do NOT RUN THIS SCRIPT AS ROOT!" exit fi clear read -p "Insert your username " user read -p "insert the IP of the server " ip echo " " echo -e "\e[0mWELCOME \e[31m$user \e[0m you are going to copy from [REMOTE to LOCAL]\e[0m" read -p "what file you'd like to copy on your pc? ( *.txt to copy all .txt files ) " filename echo -e "\e[0mYou've selected the file \e[32m$filename\e[0m" read -p "insert the destination of the file ( write . for current directory ) " dest echo -e "\e[0mThe file \e[31m$filename\e[0m will be copied on your local drive to the path \e[32m$dest\e[0m" rsync -avz -e 'ssh -p 22' --progress $user@$ip:/home/$user/$filename $dest