ssh

Comando:
ssh
Tipo:
cmd
Url:
http://www.openssh.com
Descripcion:
SSH es un protocolo de red y un conjunto de estándares que permiten una conexión encriptada entre dos computadoras
Plataforma:
AIX, Solaris, Linux, Windows

Una de las maneras de instalar OpenSSH en AIX.

  • Instalarlos con smitty install
  • Validar que se instalaron correctamente con lslpp -l | grep ssh y lslpp -l | grep ssl.
  • Iniciar el servicio de SSH.
[root@AFOWASP1 ~]# lssrc -a | grep ssh
 sshd             ssh              331948       active


[root@AFOWASP1 ~]# startsrc -s sshd
Fuentes

Para conectarse a un servidor vía SSH sin contraseña es muy sencillo, pongamos un escenario donde de nuestra casa nos queremos conectar al trabajo por SSH, nuestra clave es tan compleja que ni nosotros nos acordamos y es tedioso estar copiando y pegando. Hay varias soluciones, una es crear un trusted host (sitio confiable) del cual nos vamos a conectar, la otra es crear una llave que nos permita acceder con la comprobación de las mismas de forma automática.

Lo primero, en nuestra máquina cliente generamos una llave RSA con el siguiente comando:

ssh-keygen -t rsa 

Esto nos preguntará el archivo a guardar y opcionalmente una frase de desafio que se enviará (y nos pedirá) cada que nos conectemos al servidor destino. Esta puede ser en blanco.

Una vez hecho esto, se genera el archivo

 ~/.ssh/id_rsa.pub 

el cual debemos copiar al servidor que nos queremos conectar sin contraseña:

ssh-copy-id IP_SERVIDOR

Listo, eso debería bastar para conectarse con ssh user host sin una contraseña.

La carpeta del HOME debe tener permisos de 755 o no funcioará.
Chroot (cárceles/jail) - Si se tienen usuarios en cárceles es necesario poner el .ssh/authorized_keys en el home que se declara en el /etc/passwd.

IMPORTANTE: Al tener varios usuarios compartienedo el mismo authorized_keys significa que puede entrar con cualquier usuario que tenga ese mismo home.

Esto es:

El usuario oracle del servidor SEGORCP1 (oracle@SEGORP1) genera su llaves y le comparte la pública al usuario segclie del servidor SFTPSERVER (segclie@SFTPSERVER),

Línea del /etc/passwd en SFTPSERVER

usuario1:x:661:661:Usuario1:/home/:/bin/false
usuario2:x:662:662:Usuario2:/home/:/bin/false

Línea del sshd_config

Match Group entidades
        ChrootDirectory /home/entidades/%u
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no

La llave pública tendrá que guardarse en /home/.ssh/authorized_keys para que el usuario oracle@SEGORP1 pueda entrar como segclie@SFTPSERVER, pero el usuario usuario1@SFTPSERVER tiene declarado el mismo home (/home), lo cual es que si el usuario oracle@SEGORP1 se firma como usuario1@SFTPSERVER también lo dejará entrar.

  • tar cvf - . | gzip -c -1 | ssh user@host cat ">" remotefile.gz
  • ssh target_address cat <localfile ">" remotefile
  • ssh target_address cat <localfile - ">" remotefile
  • cat localfile | ssh target_address cat ">" remotefile
  • cat localfile | ssh target_address cat - ">" remotefile
  • dd if=localfile | ssh target_address dd of=remotefile
  • ssh target_address cat <localfile "|" dd of=remotefile
  • ssh target_address cat - <localfile "|" dd of=remotefile
  • ( cd SOURCEDIR && tar cf - . ) | ssh target_address "(cd DESTDIR && tar xvpf - )"
  • ( cd SOURCEDIR && tar cvf - . ) | ssh target_address "(cd DESTDIR && cat - > remotefile.tar )"
  • ( cd SOURCEDIR && tar czvf - . ) | ssh target_address "(cd DESTDIR && cat - > remotefile.tgz )"
  • ( cd SOURCEDIR && tar cvf - . | gzip -1 -) | ssh target_address "(cd DESTDIR && cat - > remotefile.tgz )"
  • ssh target_address "( nc -l -p 9210 > remotefile & )" && cat source-file | gzip -1 - | nc target_address 9210
  • cat localfile | gzip -1 - | ssh target_address cat ">" remotefile.gz
  • ssh target_address cat remotefile > localfile
  • ssh target_address dd if=remotefile | dd of=localfile
  • ssh target_address cat "<" remotefile >localfile
  • ssh target_address cat "<" remotefile.gz | gunzip >localfile

••••••••••

# ###This one uses CPU cycles on the remote server to compare the files:

  • ssh target_address cat remotefile | diff - localfile
  • cat localfile | ssh target_address diff - remotefile

# ###This one uses CPU cycles on the local server to compare the files:

  • ssh target_address cat <localfile “|” diff - remotefile



Push: Push local file to remote server.

Pull: Pull remote file from remote server to local machine.

Of course there is always ftp, scp2, nfs, smb and other methods as well.

The above methods make a great Ghost replacement. One can boot a system using standalone linux on a floppy, such as tomsrtbt and can then proceed to:

  1. backup the local hard drive to a remote server or
  2. download an image from the remote server and place it on the local hard drive.

RSH works just the same as SSH I'm sure, it's jut that ssh or ssh should give you better security.

Note: Compressing and then transferring data is faster than transferring uncompressed data. Use compression before sending data over the wire to achieve faster data transfer speeds.

localfile and remotefile can be files, directories, images, hard drive partitions, or hard drives.

  • ( cd SOURCEDIR && tar cf - . ) | (cd DESTDIR && tar xvpf - )
  • ftp> get file.gif “| xv -”
  • ftp> get README “| more”
  • ftp> put “| tar cvf - .” myfile.tar
  • ftp> put “| tar cvf - . | gzip ” myfile.tar.gz
  • ''ftp> get myfile.tar "| tar xvf -"''
  * zcat Fig.ps.Z | gv -
  * gunzip -c Fig.ps.gz | gv -
  * tar xvf mydir.tar
  * tar xvf - < mydir.tar
  * cat mydir.tar | tar xvf -
  * tar cvf mydir.tar .
  * tar cvf - . > mydir.tar
  * tar cf - . | (cd ~/newdir; tar xf -)
  * gunzip -c foo.gz > bar
  * cat foo.gz | gunzip > bar
  * zcat foo.gz > bar
  * gzip -c foo > bar.gz
  * cat foo | gzip > bar.gz
  * cat foo | gzip > bar.gz

&& is shorthand for "if true then do"
|| is shorthand for "if false then do"

These can be used separately or together as needed. The following examples will attempt to change directory to “/tmp/mydir”; you will get different results based on whether “/tmp/mydir” exists or not.

  • cd /tmp/mydir && echo was able to change directory
  • cd /tmp/mydir || echo was not able to change directory
  • cd /tmp/mydir && echo was able to change directory || echo was not able to change to directory
  • cd /tmp/mydir && echo success || echo failure
  • cd /tmp/mydir && echo success || { echo failure; exit; }

The dash “-” is used to reference either standard input or standard output. The context in which the dash is used is what determines whether it references standard input or standard output.

Lo que hace es que cuando hagas un ssh al server 192.168.0.22 alpuerto 4001, lo que hace es que estas entrando al servidor 192.168.0.3 por el puerto 22 que es el SSH

[root@192.168.0.22 ~]$ ssh root@192.168.0.3 -L 192.168.0.22:4001:192.168.0.3:22
#!/bin/bash
N=`ps aux |grep ssh|grep 4001|wc -l`

if [ $N -lt 1 ] ; then
/usr/bin/ssh -R4001:localhost:22 user@dominio.com -N -f
echo "Reinicio ssh `date`"  >>~/reinicio.log
fi

Para realizar una conexión a un servidor remoto por medio de SSH es necesario contar con un CLIENTE de SSH.