Linux - SSH con chiave pubblica/privata

1) Installare OpenSSH sul server Linux 

yum install ssh

2) Va scaricato l'installer del programma puttygen, una volta lanciato il programma usare i prarametri proposti di default:
  • SSH-2 RSA con 1024 o 2048 bit di crittatura
3) Digitare una key-passphrase di protezione (che sarà quella richiesta quando uno si collega da remoto)

4) Salviamo la chiave privata.

5) Per la chiave pubblica fare il copia incolla, guardando la schermata precedente, sotto la dicitura Public Key salvando il file con nome
authorized_keys in modo da essere in formato compatibile OPENSSH.
  • Copiare authorized_keys nel percorso /home/utente/.ssh/ con permission 400 per l'utente che si dovrà collegare da remoto. Il file deve essere di proprietà dell'utente e del relativo gruppo sempre dell'utente.

6) A questo andiamo a modificare il file di configurazione di OpenSSh, va tolta la login di root quindi si va in /etc/ssh e si modifica Sshd_config

vi  /etc/ssh/Sshd_config
    • Protocol 2 ok
    • Permittrootlogin = no
    • AuthorizedkeysFile si cambia il nome
    • Passwordauthorization = no
Va riavviato il servizio ssh
    • Service sshd restart
Se invece uno vuole abilitare il sudo.
    • /etc/sudoers
    • #wheel ALL=ALL (va scommentato)
    • :WQ!
    • Sudo su –l
vi /Etc/group
    1. Al gruppo wheel si aggiunge l'utente desiderato
Il client ssh sul sistema operativo linux è

> ssh


> Ssh -i
path_chiave_privata user@hostname <<comandi_remoti>>
  • –i identifica il file e relativo percorso della chiave privata.
  • Dove si trova la chiave privata
    1. Openkey.prv è da trasferire via winsvc sul client da dove parte il collegamento.
    2. Da sistemi Windows invece si usa Putty
  • << comandi_remoti> lista comandi.
  • N.B. Questo è il modo di mandare batch su computer remoti in sicurezza stessa cosa si può fare con il telnet.
vi /root/.ssh/know.host
  • Contiene i nomi degli host su cui ho fatto il collegamento.
  • Si può cancellare e rifarlo.
Di seguito il file di configurazione utilizzato Sshd_config:

-----------------------------------------------------------------------------------------

# $OpenBSD: sshd_config,v 1.73 2005/12/06 22:38:28 reyk Exp $

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Port 17602
#Protocol 2,1
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6

#RSAAuthentication yes
#PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication mechanism.
# Depending on your PAM configuration, this may bypass the setting of
# PasswordAuthentication, PermitEmptyPasswords, and
# "PermitRootLogin without-password". If you just want the PAM account and
# session checks to run without PAM authentication, then enable this but set
# ChallengeResponseAuthentication=no
#UsePAM no
UsePAM yes

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no

# no default banner path
#Banner /some/path

# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server