Changes

Jump to navigation Jump to search
241 bytes added ,  14:50, 12 March 2019
m
Line 1: Line 1:  
SSH stands for Secure Shell. Establishes a secure communication between 2 computers.<br />
 
SSH stands for Secure Shell. Establishes a secure communication between 2 computers.<br />
== Create a key pair ==
+
==Create a key pair==
 
To create a key pair for the ssh:
 
To create a key pair for the ssh:
 
  ssh-keygen -t rsa -C "your_email@example.com"
 
  ssh-keygen -t rsa -C "your_email@example.com"
Line 6: Line 6:  
  ssh-keygen -e -f id_rsa.pub > yourfilename.pub
 
  ssh-keygen -e -f id_rsa.pub > yourfilename.pub
 
-i is the inverse of the -e switch
 
-i is the inverse of the -e switch
=== Change SSH key Password ===
+
===Change SSH key Password===
 
  ssh-keygen -f id_rsa -p
 
  ssh-keygen -f id_rsa -p
   −
== Add the key to the ssh-agent ==
+
==Add the key to the ssh-agent==
 
  eval "$(ssh-agent -s)"
 
  eval "$(ssh-agent -s)"
 
  ssh-add ~/.ssh/id_rsa
 
  ssh-add ~/.ssh/id_rsa
== View key information ==
+
==View key information==
 
  ssh-keygen -l -f id_rsa.pub
 
  ssh-keygen -l -f id_rsa.pub
 
Returns something like: 2048 3f:4b:dd:ce:2b:cd:dc:99:13:ff:38:4a:24:95:d4:e9  rafahsolis@gmail.com (RSA)
 
Returns something like: 2048 3f:4b:dd:ce:2b:cd:dc:99:13:ff:38:4a:24:95:d4:e9  rafahsolis@gmail.com (RSA)
== Copy key to server ==
+
==Copy key to server==
 
  ssh-copy-id -i path/to/key_name.pub user_name@host_name
 
  ssh-copy-id -i path/to/key_name.pub user_name@host_name
 
If .pub is already uploaded to the server:
 
If .pub is already uploaded to the server:
 
  cat filename.pub >> $HOME/.ssh/authorized_keys
 
  cat filename.pub >> $HOME/.ssh/authorized_keys
== If home directory is encrypted ==
+
==If home directory is encrypted==
 
  $ /sbin/umount.ecryptfs_private
 
  $ /sbin/umount.ecryptfs_private
 
  $ cd $HOME
 
  $ cd $HOME
Line 31: Line 31:  
  AuthorizedKeysFile /etc/ssh/%u/authorized_keys
 
  AuthorizedKeysFile /etc/ssh/%u/authorized_keys
   −
== ssh tunneling ==
+
==ssh tunneling==
 
This is used for example to connect to a database on a server that has the database port closed but ssh port open.<br />
 
This is used for example to connect to a database on a server that has the database port closed but ssh port open.<br />
ssh -N -L localport:remotehost:remoteport remoteuser@remotehost
+
<source lang="bash">ssh -N -L localport:remotehost:remoteport remoteuser@remotehost
ssh ip_maq_intermedia -L puerto_local_kali:ip_destino_real:puerto_remoto
+
ssh ip_maq_intermedia -L puerto_local_kali:ip_destino_real:puerto_remoto
 +
ssh news.menupayapp.com -NL 5432:fsim-dbpg.c9hdfwhhklwy.eu-central-1.rds.amazonaws.com:5432</source>
 +
 
 
Example:
 
Example:
 
  ssh -i .ssh/MySshKey.pem -N -L 8888:localhost:3306 ubuntu@myserver.com
 
  ssh -i .ssh/MySshKey.pem -N -L 8888:localhost:3306 ubuntu@myserver.com
Line 40: Line 42:  
the database on myserver.com using your local port 8888.<br />
 
the database on myserver.com using your local port 8888.<br />
 
(*) -N tells ssh that you won't execute any commands on the ssh shell.<br />
 
(*) -N tells ssh that you won't execute any commands on the ssh shell.<br />
=== Check/close open tunnels ===
+
===Check/close open tunnels===
 
  <nowiki>
 
  <nowiki>
netstat -n --protocol inet | grep ':22'
+
netstat -n --protocol inet | grep ':22'
sudo lsof -i -n | egrep '\<ssh\>'
+
sudo lsof -i -n | egrep '\<ssh\>'
sudo lsof -i -n | egrep '\<sshd\>'</nowiki>
+
sudo lsof -i -n | egrep '\<sshd\>'</nowiki>
    
'''To close open tunnels'''<br />
 
'''To close open tunnels'''<br />
Line 51: Line 53:  
'''To see what it will kill'''
 
'''To see what it will kill'''
 
  ps aux | grep my_ssh_key.pem
 
  ps aux | grep my_ssh_key.pem
=== Examples ===
+
===Examples===
* Access to a remote MySQL binded to 127.0.0.1 (it woudn't be accesible from outside)
+
 
 +
*Access to a remote MySQL binded to 127.0.0.1 (it woudn't be accesible from outside)
 +
 
 
Runing this command on your box:
 
Runing this command on your box:
 
  ssh -N -L 3666:localhost:3306 user@some.remotehost.com
 
  ssh -N -L 3666:localhost:3306 user@some.remotehost.com
 
Makes the MySQL Server accesible at your local machine at port 3666
 
Makes the MySQL Server accesible at your local machine at port 3666
   −
== Configuration ==
+
==Configuration==
 
Edit the following files to configure ssh<br />
 
Edit the following files to configure ssh<br />
 
(Message of the Day)
 
(Message of the Day)
 +
 
*/etc/motd (old)
 
*/etc/motd (old)
* /etc/update-motd.d/* (new)
+
*/etc/update-motd.d/* (new)
 +
 
 
  echo -e "\e[31m\\u2588\u2588\u2588\u2588\u2588\u2588\u2588\e[33m\\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\e[31m\\u2588\u2588\u2588\u2588\u2588\u2588\u2588\e[37m" > /etc/update-motd.d/flag
 
  echo -e "\e[31m\\u2588\u2588\u2588\u2588\u2588\u2588\u2588\e[33m\\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\e[31m\\u2588\u2588\u2588\u2588\u2588\u2588\u2588\e[37m" > /etc/update-motd.d/flag
 
  echo "cat /etc/update-motd.d/flag" >> /etc/update-motd.d/00-header
 
  echo "cat /etc/update-motd.d/flag" >> /etc/update-motd.d/00-header
    
Other settings:
 
Other settings:
 +
 
*/etc/ssh/sshd_config
 
*/etc/ssh/sshd_config
 +
 
Recomended: Disable password login:
 
Recomended: Disable password login:
 
  ChallengeResponseAuthentication no
 
  ChallengeResponseAuthentication no
Line 74: Line 82:  
  sudo service ssh restart
 
  sudo service ssh restart
   −
== Videos ==
+
==Videos==
 
[https://www.dropbox.com/s/uxng22kpge7luxf/SSH%20Tutorial%20-%20Basic%20server%20administration%20with%20SSH-DbPDraCYju8.mp4?dl=0 SSH Tutorial Basic server administration with SSH (mp4)]<br />
 
[https://www.dropbox.com/s/uxng22kpge7luxf/SSH%20Tutorial%20-%20Basic%20server%20administration%20with%20SSH-DbPDraCYju8.mp4?dl=0 SSH Tutorial Basic server administration with SSH (mp4)]<br />
 
[https://www.dropbox.com/s/hzvkdcdw11t1cxk/SSH%20SCP%20and%20key%20pairs%20tutorial%20%28Secure%20authentication%20and%20encrypted%20comunication%29-oHoRYCY-LYU.mp4?dl=0 SSH SCP and key pairs tutorial Secure authentication and encrypted comunication (mp4)]
 
[https://www.dropbox.com/s/hzvkdcdw11t1cxk/SSH%20SCP%20and%20key%20pairs%20tutorial%20%28Secure%20authentication%20and%20encrypted%20comunication%29-oHoRYCY-LYU.mp4?dl=0 SSH SCP and key pairs tutorial Secure authentication and encrypted comunication (mp4)]
   −
== Config files ==
+
==Config files==
 
sudo nano /etc/ssh/sshd_config  (ssh daemon config)<br />
 
sudo nano /etc/ssh/sshd_config  (ssh daemon config)<br />
=== $HOME/.ssh/config ===
+
===$HOME/.ssh/config===
 
  <nowiki>Host morpheus
 
  <nowiki>Host morpheus
    IdentityFile ~/.ssh/Trinity.pub
+
    IdentityFile ~/.ssh/Trinity.pub
    User rafa
+
    User rafa
    port 10535
+
    port 10535
 
+
=== $WORK/.ssh/config ===
+
=== $WORK/.ssh/config ===
Host flirt
+
Host flirt
    IdentityFile ~/.ssh/Trinity.pub
+
    IdentityFile ~/.ssh/Trinity.pub
    User rafa
+
    User rafa
    port 10536</nowiki>
+
    port 10536</nowiki>
    
(connections config)
 
(connections config)
 
  <nowiki>Host fpsim-frontend
 
  <nowiki>Host fpsim-frontend
    IdentityFile ~/.ssh/DNC-FKY.pem
+
    IdentityFile ~/.ssh/DNC-FKY.pem
 
+
Host *
+
Host *
    ServerAliveInterval 30
+
    ServerAliveInterval 30
    ServerAliveCountMax 2
+
    ServerAliveCountMax 2
 +
 +
Host mi6.rra.lan
 +
    IdentityFile ~/.ssh/rra_fake.pem
 +
    User rra
 +
 +
Host leaks.rra.lan
 +
    IdentityFile ~/.ssh/rt_rsa
 +
    User xe50582
 +
 +
Host news.menupayapp.com
 +
    IdentityFile ~/.ssh/rra_id.pem
 +
    User ubuntu
 +
 +
Host 20.1.40.109
 +
    IdentityFile ~/.ssh/rt_rsa
 +
    User rra
 +
 +
Host gitrra.dyndns.org
 +
    IdentityFile ~/.ssh/DNC-FKY.pem
 +
    User ubuntu
 +
 +
Host mapper1
 +
    IdentityFile ~/.ssh/id_rsa
 +
    HostName WF00MPA1.igrupobbva
 +
    User pi
 +
 +
Host mapper2
 +
    IdentityFile ~/.ssh/id_rsa
 +
    HostName WF00MPA2.igrupobbva
 +
    User pi
 +
 +
 +
 +
# LEAVE THIS ONES AT THE BOTTOM (WILDCHARS) First match will be used
 +
Host 20.1.40.*
 +
    IdentityFile ~/.ssh/rt_rsa
 +
    User xe50582
 +
 +
Host *.rra.lan
 +
    IdentityFile ~/.ssh/rt_rsa
 +
    User xe50582
 +
 +
 +
Host 10.255.0.*
 +
    IdentityFile ~/.ssh/rt_rsa
 +
    User xe50582</nowiki>
   −
Host mi6.rra.lan
+
==LDAP ldapkeyfile==
    IdentityFile ~/.ssh/rra_fake.pem
+
<source lang="bash">#!/usr/bin/env bash
    User rra
  −
 
  −
Host leaks.rra.lan
  −
    IdentityFile ~/.ssh/rt_rsa
  −
    User xe50582
  −
 
  −
Host news.menupayapp.com
  −
    IdentityFile ~/.ssh/rra_id.pem
  −
    User ubuntu
  −
 
  −
Host 20.1.40.109
  −
    IdentityFile ~/.ssh/rt_rsa
  −
    User rra
  −
 
  −
Host gitrra.dyndns.org
  −
    IdentityFile ~/.ssh/DNC-FKY.pem
  −
    User ubuntu
  −
 
  −
Host mapper1
  −
    IdentityFile ~/.ssh/id_rsa
  −
    HostName WF00MPA1.igrupobbva
  −
    User pi
  −
 
  −
Host mapper2
  −
    IdentityFile ~/.ssh/id_rsa
  −
    HostName WF00MPA2.igrupobbva
  −
    User pi
  −
 
  −
 
  −
 
  −
# LEAVE THIS ONES AT THE BOTTOM (WILDCHARS) First match will be used
  −
Host 20.1.40.*
  −
    IdentityFile ~/.ssh/rt_rsa
  −
    User xe50582
  −
 
  −
Host *.rra.lan
  −
    IdentityFile ~/.ssh/rt_rsa
  −
    User xe50582
  −
 
  −
 
  −
Host 10.255.0.*
  −
    IdentityFile ~/.ssh/rt_rsa
  −
    User xe50582</nowiki>
  −
 
  −
== LDAP ldapkeyfile ==
  −
<source lang="bash">#!/usr/bin/env bash
   
ldapsearch -h rtLDAP01.igrupobbva -b dc=rtLDAP01,dc=igrupobbva -x '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
 
ldapsearch -h rtLDAP01.igrupobbva -b dc=rtLDAP01,dc=igrupobbva -x '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
   Line 153: Line 161:  
#-b ou=users,dc=rtLDAP01,dc=igrupobbva</source>
 
#-b ou=users,dc=rtLDAP01,dc=igrupobbva</source>
   −
== sshd_config LDAP ldapsearch ==
+
==sshd_config LDAP ldapsearch==
 
  AuthorizedKeysCommand /bin/ldapkeyfile
 
  AuthorizedKeysCommand /bin/ldapkeyfile
 
  AuthorizedKeysCommandUser nobody
 
  AuthorizedKeysCommandUser nobody
   −
== Welcome message ==
+
==Welcome message==
 
Two files must be edited:<br />
 
Two files must be edited:<br />
 
/etc/motd (message of the day)<br />
 
/etc/motd (message of the day)<br />
 
/etc/ssh/sshd_config: Change the setting PrintLastLog to "no", this will disable the "Last login" message.
 
/etc/ssh/sshd_config: Change the setting PrintLastLog to "no", this will disable the "Last login" message.
== Convert rsa to ppk ==
+
==Convert rsa to ppk==
 
  puttygen keyname -o keyname.ppk
 
  puttygen keyname -o keyname.ppk
== Avoid broken pipe ==
+
==Avoid broken pipe==
 
2 options:<br />
 
2 options:<br />
=== ClientAliveInterval, SeverAliveInterval ===
+
===ClientAliveInterval, SeverAliveInterval===
==== Client side ====
+
====Client side====
 
Use ClientAliveInterval if you have a jump machine<br />
 
Use ClientAliveInterval if you have a jump machine<br />
 
create file: /home/user/.ssh/config with the following content: (client side) chmod 600
 
create file: /home/user/.ssh/config with the following content: (client side) chmod 600
 
  <nowiki>
 
  <nowiki>
Host *
+
  Host *
    ServerAliveInterval 60
+
      ServerAliveInterval 60
    ServerAliveCountMax 2</nowiki>
+
      ServerAliveCountMax 2</nowiki>
 
For each user, or ading to /etc/ssh/ssh_config
 
For each user, or ading to /etc/ssh/ssh_config
 
  ServerAliveInterval 60
 
  ServerAliveInterval 60
 
  ClientAliveCountMax 2
 
  ClientAliveCountMax 2
   −
==== Server side ====
+
====Server side====
 
  echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
 
  echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
   Line 183: Line 191:  
2:
 
2:
 
  <nowiki>
 
  <nowiki>
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time</nowiki>
+
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time</nowiki>
    
Shell script to reconnect on broken pipe:
 
Shell script to reconnect on broken pipe:
Line 219: Line 227:  
</source>
 
</source>
   −
== known_hosts ==
+
==known_hosts==
 
===Remove offending key===
 
===Remove offending key===
 
If when trying to connect to a host you get the message:
 
If when trying to connect to a host you get the message:
Line 225: Line 233:  
and you trust the host (this can happen when you change CNAME file of your DNS to point to a different server
 
and you trust the host (this can happen when you change CNAME file of your DNS to point to a different server
 
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R server_dns_or_ip
 
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R server_dns_or_ip
== Enable ssh at boot ==
+
==Enable ssh at boot==
 
  # update-rc.d -f ssh enable 2 3 4 5
 
  # update-rc.d -f ssh enable 2 3 4 5
 
  systemctl enable ssh
 
  systemctl enable ssh
   −
== Force password authentication ==
+
==Force password authentication==
 
  ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com
 
  ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com
== SSH Config ==
+
==SSH Config==
 
Path ~/.ssh/config
 
Path ~/.ssh/config
=== Work ===
+
===Work===
 
  <nowiki>Host fpsim-frontend
 
  <nowiki>Host fpsim-frontend
    IdentityFile ~/.ssh/DNC-FKY.pem
+
    IdentityFile ~/.ssh/DNC-FKY.pem
    User ubuntu
+
    User ubuntu
Host *
+
Host *
    ServerAliveInterval 30
+
    ServerAliveInterval 30
    ServerAliveCountMax 2
+
    ServerAliveCountMax 2
 
+
Host 10.255.0.*
+
Host 10.255.0.*
    IdentityFile ~/.ssh/rt_rsa
+
    IdentityFile ~/.ssh/rt_rsa
    User xe50582
+
    User xe50582
 
+
Host leaks.rra.lan
+
Host leaks.rra.lan
    IdentityFile ~/.ssh/rt_rsa
+
    IdentityFile ~/.ssh/rt_rsa
    User xe50582
+
    User xe50582
 
+
Host news.menupayapp.com
+
Host news.menupayapp.com
    IdentityFile ~/.ssh/rra_id.pem
+
    IdentityFile ~/.ssh/rra_id.pem
    User ubuntu
+
    User ubuntu
 
+
Host 20.1.40.109
+
Host 20.1.40.109
    IdentityFile ~/.ssh/rt_rsa
+
    IdentityFile ~/.ssh/rt_rsa
    User rra
+
    User rra
 
+
Host 20.1.40.*
+
Host 20.1.40.*
    IdentityFile ~/.ssh/rt_rsa
+
    IdentityFile ~/.ssh/rt_rsa
    User xe50582
+
    User xe50582
 
+
 
+
Host pdgrt.rra.lan
+
Host pdgrt.rra.lan
    User rra
+
    User rra
 
+
 
+
host geoip.dyndns.org
+
host geoip.dyndns.org
    IdentityFile ~/.ssh/rra_springfield.pem
+
    IdentityFile ~/.ssh/rra_springfield.pem
    User ubuntu
+
    User ubuntu
 
+
host rrafara.dyndns.org
+
host rrafara.dyndns.org
    IdentityFile ~/.ssh/DNC.pem
+
    IdentityFile ~/.ssh/DNC.pem
    User ubuntu
+
    User ubuntu
 
+
host deathnote.rra.lan
+
host deathnote.rra.lan
    User rra
+
    User rra
 
+
host savvius.rra.lan
+
host savvius.rra.lan
    User root
+
    User root
 
+
 
+
Host *.rra.lan
+
Host *.rra.lan
    # IdentityFile ~/.ssh/rt_rsa
+
    # IdentityFile ~/.ssh/rt_rsa
    User xe50582
+
    User xe50582
 
+
 
+
Host 10.255.0.32
+
Host 10.255.0.32
    IdentityFile ~/.ssh/rra_fake.pem
+
    IdentityFile ~/.ssh/rra_fake.pem
    user rra
+
    user rra
 
+
Host aws-gitlab
+
Host aws-gitlab
    IdentityFile ~/.ssh/DNC-FKY.pem
+
    IdentityFile ~/.ssh/DNC-FKY.pem
    User ubuntu
+
    User ubuntu
</nowiki>
+
</nowiki>
=== Trinity ===
+
===Trinity===
 
  <nowiki>Host *.herrerosolis.com
 
  <nowiki>Host *.herrerosolis.com
    IdentityFile ~/.ssh/whispers.pem
+
    IdentityFile ~/.ssh/whispers.pem
    User ubuntu
+
    User ubuntu
 
+
Host geoip.dyndns.org
+
Host geoip.dyndns.org
    IdentityFile /media/rafa/secrets/.ssh/rra_springfield
+
    IdentityFile /media/rafa/secrets/.ssh/rra_springfield
    User ubuntu
+
    User ubuntu
 
+
Host morpheus
+
Host morpheus
    IdentityFile ~/.ssh/Trinity.pub
+
    IdentityFile ~/.ssh/Trinity.pub
    User rafa
+
    User rafa
    Port 10535
+
    Port 10535
 
+
Host flirt
+
Host flirt
    IdentityFile ~/.ssh/Trinity.pub
+
    IdentityFile ~/.ssh/Trinity.pub
    User rafa
+
    User rafa
    Port 10536
+
    Port 10536
 
+
Host kodi
+
Host kodi
    User root
+
    User root
    PreferredAuthentications password
+
    PreferredAuthentications password
    PubkeyAuthentication no
+
    PubkeyAuthentication no
 
+
 
+
#Host bitbucket.org
+
#Host bitbucket.org
#  IdentityFile ~/.ssh/cpc_bitbucket
+
#  IdentityFile ~/.ssh/cpc_bitbucket
 
+
Host peibol.duckdns.org
+
Host peibol.duckdns.org
    User ubuntu
+
    User ubuntu
    IdentityFile ~/.ssh/Trinity
+
    IdentityFile ~/.ssh/Trinity
 
+
Host lightning01
+
Host lightning01
    User pi
+
    User pi
    IdentityFile ~/.ssh/Trinity
+
    IdentityFile ~/.ssh/Trinity
 
+
Host scripting-ssii.rra.lan
+
Host scripting-ssii.rra.lan
    User rra
+
    User rra
 
+
Host *.rra.lan
+
Host *.rra.lan
    User xe50582
+
    User xe50582
 
+
Host felixnomada.duckdns.org
+
Host felixnomada.duckdns.org
    User ubuntu
+
    User ubuntu
    IdentityFile ~/.ssh/felixInteractions.pem
+
    IdentityFile ~/.ssh/felixInteractions.pem
 
+
Host bitbucket.org
+
Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket</nowiki>
+
    IdentityFile ~/.ssh/bitbucket</nowiki>

Navigation menu