SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
SSH COOKBOOK V2 
A SSH TOOLS SUITE PRESENTATION 
ENHANCED VERSION 
Created by Jean-Marie Renouard / @jmrenouard 
http://www.jmrenouard.fr/
WHAT'S SSH ? 
SSH is a secure TCP communication protocol. 
SSH v2 is base standard in all distributions. 
SSH allows you to connect securely to server. 
SSH avoid attack such man in the middle.
SSH BASIC USAGE 
Connect to server REF01.mynetwork as osuser 
$ ssh osuser@REF01.mynetwork
WHAT'S NEXT ? 
Password is asked. 
osuser@REF01.mynetwork's password : 
Password is checked based on system. 
Input password is crypted. 
Result is compared with /etc/shadow information. 
Comparaison failed : command fails, simple !
AND WHEN IT IS OK ... 
Comparaison successed 
SSH asks system for a new shell session. 
Shell session is based on /etc/passwd info. 
7th and last field of /etc/passwd is shell path. 
Default Welcome Message 
Last login: Thu Mar 20 23:26:46 2014 from 192.168.X.X 
Then, You've got a shell ( Bash for instance ) 
A shell as a local shell remotely / securely !
SHELL IS GREAT 
Ctrl-d : Kill the connection immediately. 
Ctrl-l : Clean your screen 
Ctrl-r : Search in bash history on the server 
Readline powered 
.bash_history : command history 
.bash_profile and .bashrc for personal shell customisation 
(alias, functions, ...)
BORING ASPECT OF SSH 
ONE CONNECTION MEANS ONE PASSWORD CHECK. 
Password typing 
No human error probe 
Ctrl-d, exit, kill -9 0, killall bash, ... 
Kill/terminate Shell session means : 
All processes launched from Shell session are also killed. 
You JUST have to REconnect and REtype your password. 
REtype your command even if it's long time taking.
AVOIDING PASSWORD TYPING 
Thanks God, it is possible to connect without passord typing. 
It is as secure as password typing. 
Maybe more secure: 
No password Excel File on network 
No Agile Access info Post-it on ScrumBoard :)
SSH KEY GENERATION 
2 FILES MUST BE GENERATED 
1. Red key : .ssh/id_rsa is your Private SSH key 
Keep it secret 
2. Blue key: .ssh/id_rsa.pub is your Public SSH key.
SSH KEY GENERATION COMMAND 
Key Generation Command: 
ssh-keygen -t rsa 
Hey, it is asking me a F*** password !!! 
Leave it empty :)
SSH KEY DEPLOYMENT 
Public Key Deployment Command: 
ssh-copy-id -i .ssh/id_rsa.pub ossuer@REF01.mynnetwork 
It is asking a password for a last time ....
AND ALL IS OK ? 
On the server, .ssh/authorized_keys contains the content of 
your public key. 
Try to connect one again. 
ssh osuser@REF01.mynetwork 
NO MORE PASSWORD .... 
Magic Simple, Easy and secure ....
IS IT ALL ? 
How to automate this process ? 
Library Expect : 
library interacting with shell programmaticaly. 
You can script an interactive scenario. 
And you can execute it automatically.
BETTER THAN A SHELL 
YOU CAN ALSO REMOTELY EXECUTE A COMMAND. 
Shutdown the server 
ssh root@REF01.mynetwork shutdown -h now 
Execute a remote python script 
ssh osuser@REF01.mynetwork  
"python remoteScript.py" 
Know load average on REF01 server 
ssh osuser@REF01.mynetwork uptime
PERL EXPECT 
#!/usr/bin/perl 
use strict; 
use Expect; 
my $timeout=1; 
my $command="ssh ".$ARGV[0]." ".$ARGV[2]; 
my $exp = Expect->spawn($command) or die "Cannot spawn $command: $!n"; 
$exp->raw_pty(1); 
LOGIN: 
$exp->expect($timeout, 
[ 'ogin: $' => sub { 
$exp->send("lusern"); 
exp_continue; } 
], 
[ 'yes/no)?s*$' => sub { 
$exp->send("yesn"); 
goto LOGIN; 
} 
], 
[ 'assword:s*$' => sub { 
$exp->send($ARGV[1]."n"); 
exp_continue; } 
], 
'-re', qr'[#>:] $' 
); 
$exp->soft_close();
REMOTE EXECUTE A LOCAL SCRIPT 
PYTHON, BASH, PHP, RYBY, JAVA, ALL INTERPRETERS 
Interpreter must be present on the remote server 
Simple Python Script: hello.py 
#!/usr/bin/python 
print "Hello World !" 
Remote execute script:ssh-exec 
#!/bin/sh 
INTERPRETER=$(head -n 1 $2 | sed -e 's/#!//') 
cat $2 | grep -v "#" | ssh -t $1 $INTERPRETER 
Usage 
ssh-exec osuser@REF01.mynetwork hello.py
FILE TRANSFERT OVER SSH 
Using the input/output redirection. 
cat myLocalFile |  
ssh osuser@REF01.mynetwork  
"cat > myRemoteFile" 
Compressing on fly. 
cat myLocalFile |  
gzip |  
ssh osuser@REF01.mynetwork  
"gzip > myRemoteFile" 
Compression by SSH himself. 
cat myLocalFile | 
ssh -C osuser@REF01.mynetwork  
"cat > myRemoteFile"
DIRECTORIES OVER SSH 
Commands using input/output for directory 
tar UNIX archiver command works with stdin and stdout 
tar -czf – myDir |  
ssh -C osuser@ref01.mynetwork  
"mkdir myDir;cd myDir ;tar -xzf -" 
Better solution 
A kind of cp based on SSHv2 protocol 
scp -rp mydir osuser@ref01.mynetwork:myDir 
Best solution 
Incremental copy 
rsync -avz myDir osuser@ref01.mynetwork:myDir
MULTIPLE HOST COMMANDS 
SIMPLE SHELL LOOP ON 3 SERVERS 
for host in server1 server2 server3; do 
echo "* Updating $host" 
ssh -C root@${host}.mynetwork "yum -y update" 
done 
SIMPLE SHELL LOOP ON SERVER1 TO SERVER100 
for i in `seq 1 100`; do 
host=server${i}.mynetwork 
echo "*Updating $host" 
ssh -C root@${host} "yum -y update" 
done
MULTIPLE HOST COMMANDS IN PARALLEL 
FORKING SUBSHELLS IN LOOP ON SERVER1 TO SERVER100 
for i in `seq 1 100`; do 
( 
host=server${i}.mynetwork 
echo "*Updating $host" 
ssh -C root@${host} "yum -y update" 2>&1 >> ${host}.update.log 
echo "* Updating $host ..DONE" 
)& 
done 
Output and Errors are stored in individual log file per host
MULTIPLE HOST COMMANDS IN PARALLEL 
FORKING SUBSHELLS IN LOOP FROM A FILE 
while read host; do 
( 
echo "*Updating $host" 
ssh -C root@${host} "yum -y update" 2>&1 >> ${host}.update.log 
echo "* Updating $host ..DONE" 
)& 
done < "${1:-/proc/${$}/fd/0}" 
Server are reading from a file or from stdin 
A file with one server name by line 
Output and Errors are stored in individual log file per host
PORT FORWARDING 
OPEN A LOCAL PORT AND REDIRECT IT THROUGHT SSH 
ssh -L2000:localhost:80 user@host1 
Open a local port 2000 and redirect I/O to server port 80 on 
host1 
ssh -L8080:host2:80 user@host1 
Open a local port 8080 and redirect I/O to server port 80 on 
host2 
Using SSH to host1 to access host2 server
REVERSE PORT FORWARDING 
OPEN A REMOTE PORT ON SERVER AND REDIRECT IT 
THROUGHT SSH TO CLIENT 
ssh -R 2000:localhost:80 user@host1 
Open a port 2000 on host1 
Redirect I/O ond this port to local port80 
ssh -R 8080:host2:80 user@host1 
Open a remote port 8080 on host1 
Redirect I/O to server host2 on port 80 from ssh client host 
Using SSH to host1 to access host2 server
USEFUL SCRIPTS 
ssh-installkeys, ssh key installer 
ssh-copy-id, included in openssh-clients in all distributions 
Fusefs, Filesystem over SSH 
MUSSH, Multihost SSH 
perl-Net-SSH-Expect, automate connection without ssh keys 
scanssh, scan hosts with SSH 
sshpass, password cracker for SSH
PROJECTS FOR MASSIVE REMOTE EXECUTION 
Ansible in Python 
Chef in Ruby 
Rex in Perl 
Rundeck in Java 
Envoy in PHP 
Shunt in PHP 
SSHKit 
DO It in Ruby
PROJECTS FOR SSH MANAGEMENT 
GateOne, Web SSH client 
Storm in Python, manage your SSH identities 
SSHRC, transport your config everywhere 
git deliver, deliver files from git and SSH 
SShuttle, the poor's man VPN Solution
STELLAR LINKS 
Code samples in Bash and Perl 
http://www.jmrenouard.fr 
Follow me on Twitter
THE END 
BY JEAN-MARIE RENOUARD / JMRENOUARD.FR

Contenu connexe

Tendances

Instalasi Network Monitoring System (Nagios) Ubuntu 12.04
Instalasi Network Monitoring System (Nagios) Ubuntu 12.04Instalasi Network Monitoring System (Nagios) Ubuntu 12.04
Instalasi Network Monitoring System (Nagios) Ubuntu 12.04Febi Gelar Ramadhan
 
WHEN FILE ENCRYPTION HELPS PASSWORD CRACKING
WHEN FILE ENCRYPTION HELPS PASSWORD CRACKINGWHEN FILE ENCRYPTION HELPS PASSWORD CRACKING
WHEN FILE ENCRYPTION HELPS PASSWORD CRACKINGPositive Hack Days
 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemRoziq Bahtiar
 
What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?Docker, Inc.
 
Build your own private openstack cloud
Build your own private openstack cloudBuild your own private openstack cloud
Build your own private openstack cloudNUTC, imac
 
使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台NUTC, imac
 
50 Perintah Dasar pada linux
50 Perintah Dasar pada linux50 Perintah Dasar pada linux
50 Perintah Dasar pada linuxReskyRian
 
Docker 基本概念與指令操作
Docker  基本概念與指令操作Docker  基本概念與指令操作
Docker 基本概念與指令操作NUTC, imac
 
SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon
 SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon
SSH I/O Streaming via Redis-based Persistent Message Queue -Mani TadayonRedis Labs
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Giovanni Bechis
 
Aprils fool 2014
Aprils fool 2014Aprils fool 2014
Aprils fool 2014bijan_
 
Eduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhereEduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhereStarTech Conference
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Develcz
 
Docker command
Docker commandDocker command
Docker commandEric Ahn
 

Tendances (18)

Instalasi Network Monitoring System (Nagios) Ubuntu 12.04
Instalasi Network Monitoring System (Nagios) Ubuntu 12.04Instalasi Network Monitoring System (Nagios) Ubuntu 12.04
Instalasi Network Monitoring System (Nagios) Ubuntu 12.04
 
Red Hat Linux cheat sheet
Red Hat Linux cheat sheetRed Hat Linux cheat sheet
Red Hat Linux cheat sheet
 
WHEN FILE ENCRYPTION HELPS PASSWORD CRACKING
WHEN FILE ENCRYPTION HELPS PASSWORD CRACKINGWHEN FILE ENCRYPTION HELPS PASSWORD CRACKING
WHEN FILE ENCRYPTION HELPS PASSWORD CRACKING
 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating Sistem
 
What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?
 
Build your own private openstack cloud
Build your own private openstack cloudBuild your own private openstack cloud
Build your own private openstack cloud
 
使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台
 
50 Perintah Dasar pada linux
50 Perintah Dasar pada linux50 Perintah Dasar pada linux
50 Perintah Dasar pada linux
 
Docker 基本概念與指令操作
Docker  基本概念與指令操作Docker  基本概念與指令操作
Docker 基本概念與指令操作
 
SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon
 SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon
SSH I/O Streaming via Redis-based Persistent Message Queue -Mani Tadayon
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)
 
Aprils fool 2014
Aprils fool 2014Aprils fool 2014
Aprils fool 2014
 
Eduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhereEduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhere
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
 
Docker command
Docker commandDocker command
Docker command
 
Ubic
UbicUbic
Ubic
 
Computer Security
Computer SecurityComputer Security
Computer Security
 
Who Broke My Crypto
Who Broke My CryptoWho Broke My Crypto
Who Broke My Crypto
 

En vedette (20)

Syntaxe du langage PHP
Syntaxe du langage PHPSyntaxe du langage PHP
Syntaxe du langage PHP
 
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxManuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
 
Structure de données en PHP
Structure de données en PHPStructure de données en PHP
Structure de données en PHP
 
Présentation de PHP
Présentation de PHPPrésentation de PHP
Présentation de PHP
 
Le client HTTP PHP5
Le client HTTP PHP5Le client HTTP PHP5
Le client HTTP PHP5
 
Le client FTP de PHP5
Le client FTP de PHP5Le client FTP de PHP5
Le client FTP de PHP5
 
Les structures de données PHP5
Les structures de données PHP5Les structures de données PHP5
Les structures de données PHP5
 
SQL et MySQL
SQL et MySQLSQL et MySQL
SQL et MySQL
 
Email et PHP5
Email et PHP5Email et PHP5
Email et PHP5
 
Configuration PHP5
Configuration PHP5Configuration PHP5
Configuration PHP5
 
Fichier XML et PHP5
Fichier XML et PHP5Fichier XML et PHP5
Fichier XML et PHP5
 
PHP5 et les fichiers
PHP5 et les fichiersPHP5 et les fichiers
PHP5 et les fichiers
 
PHP 5 et la programmation objet
PHP 5 et la programmation objetPHP 5 et la programmation objet
PHP 5 et la programmation objet
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
Client base de données en PHP5
Client base de données en PHP5Client base de données en PHP5
Client base de données en PHP5
 
Javascript et JQuery
Javascript et JQueryJavascript et JQuery
Javascript et JQuery
 
Gestion de formulaires en PHP
Gestion de formulaires en PHPGestion de formulaires en PHP
Gestion de formulaires en PHP
 
анимации в Windows phone
анимации в Windows phoneанимации в Windows phone
анимации в Windows phone
 
About Sage France
About Sage FranceAbout Sage France
About Sage France
 

Similaire à Ssh cookbook

Tomáš Čorej - OpenSSH
Tomáš Čorej - OpenSSHTomáš Čorej - OpenSSH
Tomáš Čorej - OpenSSHwebelement
 
An introduction to SSH
An introduction to SSHAn introduction to SSH
An introduction to SSHnussbauml
 
Chef Hack Day Denver
Chef Hack Day Denver Chef Hack Day Denver
Chef Hack Day Denver Chef
 
Nagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform Enviornment
Nagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform EnviornmentNagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform Enviornment
Nagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform EnviornmentNagios
 
Session Server - Maintaing State between several Servers
Session Server - Maintaing State between several ServersSession Server - Maintaing State between several Servers
Session Server - Maintaing State between several ServersStephan Schmidt
 
SSH for pen-testers
SSH for pen-testersSSH for pen-testers
SSH for pen-testersE D Williams
 
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, ChefCompliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, ChefAlert Logic
 
Introduction to SSH
Introduction to SSHIntroduction to SSH
Introduction to SSHHemant Shah
 
InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018Mandi Walls
 
How to increase security with SSH
How to increase security with SSHHow to increase security with SSH
How to increase security with SSHVitalii Sharavara
 

Similaire à Ssh cookbook (20)

Tomáš Čorej - OpenSSH
Tomáš Čorej - OpenSSHTomáš Čorej - OpenSSH
Tomáš Čorej - OpenSSH
 
SSH how to 2011
SSH how to 2011SSH how to 2011
SSH how to 2011
 
Intro to SSH
Intro to SSHIntro to SSH
Intro to SSH
 
An introduction to SSH
An introduction to SSHAn introduction to SSH
An introduction to SSH
 
Chef Hack Day Denver
Chef Hack Day Denver Chef Hack Day Denver
Chef Hack Day Denver
 
tutorial-ssh.pdf
tutorial-ssh.pdftutorial-ssh.pdf
tutorial-ssh.pdf
 
Nagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform Enviornment
Nagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform EnviornmentNagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform Enviornment
Nagios Conference 2013 - Leland Lammert - Nagios in a Multi-Platform Enviornment
 
Advanced open ssh
Advanced open sshAdvanced open ssh
Advanced open ssh
 
OpenSSH tricks
OpenSSH tricksOpenSSH tricks
OpenSSH tricks
 
Linuxserver harden
Linuxserver hardenLinuxserver harden
Linuxserver harden
 
Cent os 5 ssh
Cent os 5 sshCent os 5 ssh
Cent os 5 ssh
 
Puppet @ Seat
Puppet @ SeatPuppet @ Seat
Puppet @ Seat
 
Sshstuff
SshstuffSshstuff
Sshstuff
 
Session Server - Maintaing State between several Servers
Session Server - Maintaing State between several ServersSession Server - Maintaing State between several Servers
Session Server - Maintaing State between several Servers
 
SSH for pen-testers
SSH for pen-testersSSH for pen-testers
SSH for pen-testers
 
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, ChefCompliance as Code: Velocity with Security - Fraser Pollock, Chef
Compliance as Code: Velocity with Security - Fraser Pollock, Chef
 
SSH.pdf
SSH.pdfSSH.pdf
SSH.pdf
 
Introduction to SSH
Introduction to SSHIntroduction to SSH
Introduction to SSH
 
InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018InSpec Workshop at Velocity London 2018
InSpec Workshop at Velocity London 2018
 
How to increase security with SSH
How to increase security with SSHHow to increase security with SSH
How to increase security with SSH
 

Dernier

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 

Dernier (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 

Ssh cookbook

  • 1. SSH COOKBOOK V2 A SSH TOOLS SUITE PRESENTATION ENHANCED VERSION Created by Jean-Marie Renouard / @jmrenouard http://www.jmrenouard.fr/
  • 2. WHAT'S SSH ? SSH is a secure TCP communication protocol. SSH v2 is base standard in all distributions. SSH allows you to connect securely to server. SSH avoid attack such man in the middle.
  • 3. SSH BASIC USAGE Connect to server REF01.mynetwork as osuser $ ssh osuser@REF01.mynetwork
  • 4. WHAT'S NEXT ? Password is asked. osuser@REF01.mynetwork's password : Password is checked based on system. Input password is crypted. Result is compared with /etc/shadow information. Comparaison failed : command fails, simple !
  • 5. AND WHEN IT IS OK ... Comparaison successed SSH asks system for a new shell session. Shell session is based on /etc/passwd info. 7th and last field of /etc/passwd is shell path. Default Welcome Message Last login: Thu Mar 20 23:26:46 2014 from 192.168.X.X Then, You've got a shell ( Bash for instance ) A shell as a local shell remotely / securely !
  • 6. SHELL IS GREAT Ctrl-d : Kill the connection immediately. Ctrl-l : Clean your screen Ctrl-r : Search in bash history on the server Readline powered .bash_history : command history .bash_profile and .bashrc for personal shell customisation (alias, functions, ...)
  • 7. BORING ASPECT OF SSH ONE CONNECTION MEANS ONE PASSWORD CHECK. Password typing No human error probe Ctrl-d, exit, kill -9 0, killall bash, ... Kill/terminate Shell session means : All processes launched from Shell session are also killed. You JUST have to REconnect and REtype your password. REtype your command even if it's long time taking.
  • 8. AVOIDING PASSWORD TYPING Thanks God, it is possible to connect without passord typing. It is as secure as password typing. Maybe more secure: No password Excel File on network No Agile Access info Post-it on ScrumBoard :)
  • 9. SSH KEY GENERATION 2 FILES MUST BE GENERATED 1. Red key : .ssh/id_rsa is your Private SSH key Keep it secret 2. Blue key: .ssh/id_rsa.pub is your Public SSH key.
  • 10. SSH KEY GENERATION COMMAND Key Generation Command: ssh-keygen -t rsa Hey, it is asking me a F*** password !!! Leave it empty :)
  • 11. SSH KEY DEPLOYMENT Public Key Deployment Command: ssh-copy-id -i .ssh/id_rsa.pub ossuer@REF01.mynnetwork It is asking a password for a last time ....
  • 12. AND ALL IS OK ? On the server, .ssh/authorized_keys contains the content of your public key. Try to connect one again. ssh osuser@REF01.mynetwork NO MORE PASSWORD .... Magic Simple, Easy and secure ....
  • 13. IS IT ALL ? How to automate this process ? Library Expect : library interacting with shell programmaticaly. You can script an interactive scenario. And you can execute it automatically.
  • 14. BETTER THAN A SHELL YOU CAN ALSO REMOTELY EXECUTE A COMMAND. Shutdown the server ssh root@REF01.mynetwork shutdown -h now Execute a remote python script ssh osuser@REF01.mynetwork "python remoteScript.py" Know load average on REF01 server ssh osuser@REF01.mynetwork uptime
  • 15. PERL EXPECT #!/usr/bin/perl use strict; use Expect; my $timeout=1; my $command="ssh ".$ARGV[0]." ".$ARGV[2]; my $exp = Expect->spawn($command) or die "Cannot spawn $command: $!n"; $exp->raw_pty(1); LOGIN: $exp->expect($timeout, [ 'ogin: $' => sub { $exp->send("lusern"); exp_continue; } ], [ 'yes/no)?s*$' => sub { $exp->send("yesn"); goto LOGIN; } ], [ 'assword:s*$' => sub { $exp->send($ARGV[1]."n"); exp_continue; } ], '-re', qr'[#>:] $' ); $exp->soft_close();
  • 16. REMOTE EXECUTE A LOCAL SCRIPT PYTHON, BASH, PHP, RYBY, JAVA, ALL INTERPRETERS Interpreter must be present on the remote server Simple Python Script: hello.py #!/usr/bin/python print "Hello World !" Remote execute script:ssh-exec #!/bin/sh INTERPRETER=$(head -n 1 $2 | sed -e 's/#!//') cat $2 | grep -v "#" | ssh -t $1 $INTERPRETER Usage ssh-exec osuser@REF01.mynetwork hello.py
  • 17. FILE TRANSFERT OVER SSH Using the input/output redirection. cat myLocalFile | ssh osuser@REF01.mynetwork "cat > myRemoteFile" Compressing on fly. cat myLocalFile | gzip | ssh osuser@REF01.mynetwork "gzip > myRemoteFile" Compression by SSH himself. cat myLocalFile | ssh -C osuser@REF01.mynetwork "cat > myRemoteFile"
  • 18. DIRECTORIES OVER SSH Commands using input/output for directory tar UNIX archiver command works with stdin and stdout tar -czf – myDir | ssh -C osuser@ref01.mynetwork "mkdir myDir;cd myDir ;tar -xzf -" Better solution A kind of cp based on SSHv2 protocol scp -rp mydir osuser@ref01.mynetwork:myDir Best solution Incremental copy rsync -avz myDir osuser@ref01.mynetwork:myDir
  • 19. MULTIPLE HOST COMMANDS SIMPLE SHELL LOOP ON 3 SERVERS for host in server1 server2 server3; do echo "* Updating $host" ssh -C root@${host}.mynetwork "yum -y update" done SIMPLE SHELL LOOP ON SERVER1 TO SERVER100 for i in `seq 1 100`; do host=server${i}.mynetwork echo "*Updating $host" ssh -C root@${host} "yum -y update" done
  • 20. MULTIPLE HOST COMMANDS IN PARALLEL FORKING SUBSHELLS IN LOOP ON SERVER1 TO SERVER100 for i in `seq 1 100`; do ( host=server${i}.mynetwork echo "*Updating $host" ssh -C root@${host} "yum -y update" 2>&1 >> ${host}.update.log echo "* Updating $host ..DONE" )& done Output and Errors are stored in individual log file per host
  • 21. MULTIPLE HOST COMMANDS IN PARALLEL FORKING SUBSHELLS IN LOOP FROM A FILE while read host; do ( echo "*Updating $host" ssh -C root@${host} "yum -y update" 2>&1 >> ${host}.update.log echo "* Updating $host ..DONE" )& done < "${1:-/proc/${$}/fd/0}" Server are reading from a file or from stdin A file with one server name by line Output and Errors are stored in individual log file per host
  • 22. PORT FORWARDING OPEN A LOCAL PORT AND REDIRECT IT THROUGHT SSH ssh -L2000:localhost:80 user@host1 Open a local port 2000 and redirect I/O to server port 80 on host1 ssh -L8080:host2:80 user@host1 Open a local port 8080 and redirect I/O to server port 80 on host2 Using SSH to host1 to access host2 server
  • 23. REVERSE PORT FORWARDING OPEN A REMOTE PORT ON SERVER AND REDIRECT IT THROUGHT SSH TO CLIENT ssh -R 2000:localhost:80 user@host1 Open a port 2000 on host1 Redirect I/O ond this port to local port80 ssh -R 8080:host2:80 user@host1 Open a remote port 8080 on host1 Redirect I/O to server host2 on port 80 from ssh client host Using SSH to host1 to access host2 server
  • 24. USEFUL SCRIPTS ssh-installkeys, ssh key installer ssh-copy-id, included in openssh-clients in all distributions Fusefs, Filesystem over SSH MUSSH, Multihost SSH perl-Net-SSH-Expect, automate connection without ssh keys scanssh, scan hosts with SSH sshpass, password cracker for SSH
  • 25. PROJECTS FOR MASSIVE REMOTE EXECUTION Ansible in Python Chef in Ruby Rex in Perl Rundeck in Java Envoy in PHP Shunt in PHP SSHKit DO It in Ruby
  • 26. PROJECTS FOR SSH MANAGEMENT GateOne, Web SSH client Storm in Python, manage your SSH identities SSHRC, transport your config everywhere git deliver, deliver files from git and SSH SShuttle, the poor's man VPN Solution
  • 27. STELLAR LINKS Code samples in Bash and Perl http://www.jmrenouard.fr Follow me on Twitter
  • 28. THE END BY JEAN-MARIE RENOUARD / JMRENOUARD.FR