View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Instalar SSH en Solaris8/Solaris9

Ver diario de Hojaruta08

  1. Instalamos los siguientes paquetes de sunfreeware (están en main1:/incoming/openssh-sol8) con un "gunzip nombrefichero ; pkgadd -d nombrefichero-sin-gz":
    • libgcc-3.3-sol8-intel-local
    • openssl-0.9.8b-sol8-x86-local
    • zlib-1.2.3-sol8-x86-local
    • openssh-4.3p2-sol8-x86-local
    • libgcc-3.4.6-sol8-x86-local
    • openssl-0.9.8h-sol8-x86-local
    • zlib-1.2.3-sol8-x86-local
    • libintl-3.4.0-sol8-x86-local
    • libiconv-1.11-sol8-x86-local
    • openssh-5.1p1-sol8-x86-local
  2. hacemos enlaces de local/lib y local/bin a los sitios que sí tienen path:
    # ln -s /usr/local/lib/* /usr/lib
    # ln -s /usr/local/bin/s* /usr/bin
  3. Instalamos el parche para tener generador de números aleatorios (documentación del openssh para solaris, cómo instalarlo sin reiniciar).
    1. Te llevas el fichero 112439-02.zip a la máquina en cuestión al directorio /var/spool/patch/
    2. Lo descomprimes con un
      # unzip 112439-02.zip
    3. Lo instalas:
      # patchadd /var/spool/patch/112439-02
    4. reinicias la máquina
      # reboot
  4. Como usuario, generas las llaves públicas
    % ssh-keygen -t dsa
  5. Copias esas claves al ordenador en el que quieras tener acceso:
    % cp id_dsa.pub frontpci02:/home/metro/.ssh/id_dsa.pub.mihostname
  6. En la máquina remota (frontpci02), haces
    $ cd /home/metro/.ssh
    $ cat id_dsa.pub.mihostname >> authorized_keys
  7. En la máquina local, entras una vez en la máquina remota para aceptar el fingerprint:
    % ssh frontpci02

Pasos completos para hacerlo sin tener que rebotar:

Como root:
cd /tmp
ftp 150.100.122.31
cd /incoming/openssh-sol8
bin
prompt
mget *
quit
pkgadd -d libgcc-3.4.6-sol8-x86-local
pkgadd -d openssl-0.9.8h-sol8-x86-local
pkgadd -d zlib-1.2.3-sol8-x86-local
pkgadd -d libintl-3.4.0-sol8-x86-local
pkgadd -d libiconv-1.11-sol8-x86-local
pkgadd -d openssh-5.1p1-sol8-x86-local 
ln -s /usr/local/lib/* /usr/lib
ln -s /usr/local/bin/s* /usr/bin
unzip 112439-02.zip
patchadd 112439-02
mknod /devices/pseudo/random@0:random c `grep '^random' /etc/name_to_major | cut -d ' ' -f 2` 0
mknod /devices/pseudo/random@0:urandom c `grep '^random' /etc/name_to_major | cut -d ' ' -f 2` 1
chgrp sys /devices/pseudo/random*
cd /dev
ln -s ../devices/pseudo/random@0:random /dev/random 
ln -s ../devices/pseudo/random@0:urandom /dev/urandom
rem_drv random
add_drv random
modload /kernel/drv/random
cp /dev/tty /etc/init.d/sshd
#!/bin/sh
 
pid=`/usr/bin/ps -ef | /usr/bin/grep "/usr/local/sbin/sshd" | grep -v grep | /usr/bin/awk '{print $2}'`
case $1 in
'start')
        /usr/local/sbin/sshd
        ;;
'stop')
        if [ "${pid}" != "" ]
        then
                /usr/bin/kill ${pid}
        fi
        ;;
*)
        echo "usage: /etc/init.d/sshd {start|stop}"
        ;;
esac
^D
chmod 755 /etc/init.d/sshd
ln -s /etc/init.d/sshd /etc/rc2.d/S98sshd
/etc/init.d/sshd start


Como usuario:
(haces lo que dice arriba el ssh-keygen -t dsa)

Permisos de los ficheros y directorios:


$ chmod 750 ~
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ echo "$KEYCODE" >> ~/.ssh/authorized_keys
$ chmod 644 ~/.ssh/authorized_keys

$ cd ~/.ssh
$ ssh-keygen -t dsa
$ chmod 600 id_dsa
$ chmod 644 id_dsa.pub


NOTA: Los permisos del directorio home también deben ser correctos (pertenecer al usuario, ser "0750" y esas cosas...)


Generación automática del known_hosts


De este post
The ssh-keyscan utility can be used to automatically populate the known_hosts file that is used by ssh to verify host authenticity. The sample line below populates known_hosts file with three hosts - 10.1.41.8, 10.1.34.77, and 10.1.34.88:

ssh-keyscan -p 22 -t rsa,dsa 10.1.41.8 10.1.34.77 10.1.34.88 > ~/.ssh/known_hosts



Regenerar un id_dsa.pub que se ha perdido desde el id_dsa


$ ssh-keygen -t dsa -y -f id_dsa > id_dsa.pub


Diagnosticar problemas:

arrancar el servidor como:
# /usr/local/sbin/sshd -d

Qué hacer si aparece un mensaje del tipo:

buffer_get: trying to get more bytes 129 than in buffer 39


Eso es que alguno o todos los siguientes ficherios: id_dsa id_dsa.pub authorized_keys se han añadido entradas malformadas (por ENTERs a mitad de una entrada). Ver este post.

Solución: primero cambiar el tamaño de la ventana y hacer un "resize" (para así poder reconocer las líneas con error), después editar dichos ficheros con el vi y empezar a hacer "J" (jota mayúscula) para juntar líneas...

Sobre las passphrases y como evitarlas


Hay un excelente documento aquí.

Básicamente las opciones son:
  • hostbased
  • No poner passphrase al generar las claves
  • Usar ssh-agent y claves con passphrase

Sobre ssh y el cron

Un documento que explica cómo limitar los ssh a un host y un comando concreto.

Por otro lado, si haces scp desde un expect dentro de un cron, la única manera que he visto de que funcione correctamente es (en salchicha):
#!/usr/local/bin/expect
log_user 0
spawn bash
send "scp metro@172.16.0.2:/incoming/tcm_daily_check.txt /tmp ; exit\r"
expect "Password:"
send "metro1\r"
expect "100% |"
interact