Nem kell megijedni, természetesen érkezik a Solaris 10-el beépített SSH serverrel és kliensel is. Viszont, ha extra opciókat is akarunk az SSH-ban használni, vagy simán csak uptodate verziót kívánjuk használni akkor ajánlatos a sunfreeware.com csomagjaiból telepíteni a legfrissebbet. Egy kicsit körülményes, szóval nézzük mit is kell tennünk.

Előkészületek

Régi verzió ellenőrzése
# ssh -V

Kapcsoljuk ki a régi SSH SMF service-t
Előnyös ha nem SSH-n vagyunk bejelentkezve, hanem CONSOLE kapcsolatunk is van a serverrel.

# svcadm disable ssh
# svcs ssh

Töltsük le a sunfreeware.com oldalról a megfelelő Solaris verzióhoz, és platformhoz való openssh csomagot a függőségekkel együtt és juttasuk el a rendszerünkre

openssh-5.4p1-sol10-x86-local.gz
openssl-1.0.0-sol10-x86-local.gz
zlib-1.2.4-sol10-x86-local.gz
libgcc-3.4.6-sol10-x86-local.gz

Installálás

Tömörítsük ki az openssh-t és a függőségeket
# gunzip *.gz

Először a függőségeket telepítsük
# pkgadd -d libgcc-3.4.6-sol10-x86-local

# pkgadd -d openssl-1.0.0-sol10-x86-local

# pkgadd -d zlib-1.2.4-sol10-x86-local

Most installáljuk magát az új OpenSSH csomagot
# pkgadd -d openssh-5.4p1-sol10-x86-local

Az új ssh binárisok az /usr/local/sbin és /usr/local/bin alatt lesznek elérhetőek.

SSH user és var struktúra létrehozása

Létre kell hozunk egy új SSH user-t és var struktúrát a megfelelő jogosultságokkal.

# mkdir /var/empty
# chown root:sys /var/empty
# chmod 755 /var/empty
# groupadd sshd
# useradd -g sshd -c ‘sshd privsep’ -d /var/empty -s /bin/false sshd

SSH kulcsok generálása

Hozzuk lére az új ssh-hoz az új kulcsokat, vagy másoljuk át a szükséges kulcsokat.

# /usr/local/bin/ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N “”
# /usr/local/bin/ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N “”
# /usr/local/bin/ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N “”

Új SMF service létrehozása az új SSH-hoz

Na most, az a gond, hogyha disable-ből visszakapcsolnánk az eredeti ssh service-t, akkor az a régit indítaná el, és tenne magasról az új csomagra, amit telepítettünk. Tehát nincs más, mint új SMF service-t kell létrehoznunk, az új csomaghoz, a régit pedig disable állapotban hagyni.

Először is hozzuk lére az method scriptet

# vi /lib/svc/method/ossh

    #!/sbin/sh
    # Control Method for openSSH (/lib/svc/method/ossh (c) esm@mnemonic.no 2006)
    make_hostkeys () { #making host-keys if they dont exist
    if [ ! -r /etc/ssh/ssh_host_dsa_key ] ; then
    mkdir -p /var/empty ; chown root:sys /var/empty ; chmod 755 /var/empty
    mkdir -p /usr/local/etc ; chown root:sys /usr/local/etc ; chmod 755 /usr/local/etc
    /usr/sbin/groupadd sshd ; sleep 1
    /usr/sbin/useradd -g sshd -c ‘sshd privsep’ -d /var/empty -s /bin/false sshd
    /usr/local/bin/ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N “”
    /usr/local/bin/ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N “”
    fi
    }
    case “$1” in
    ‘-u’) rm -f /usr/local/etc/ssh_host_???_key* ;;
    ‘-c’) make_hostkeys ;;
    ‘restart’) /usr/bin/pkill -f -1 -P1 /usr/local/sbin/sshd ;;
    ‘start’) make_hostkeys ; /usr/local/sbin/sshd -f /usr/local/etc/sshd_config ;;
    ‘stop’) /usr/bin/pkill -f -9 -P 1 /usr/local/sbin/sshd || /usr/bin/pkill -9 /usr/local/sbin/sshd ;;
    *)
    echo “Usage: $0 { start | stop |restart | -u | -c }”
    exit 1
    esac
    exit 0

Majd állítsuk be a helyes jogosultságot is rajta
# chmod 555 /lib/svc/method/ossh

Most hozzuk létre a manifest file-t
# vi /var/svc/manifest/network/ossh.xml

    <?xml version="1.0"?>

    <!DOCTYPE service_bundle
    SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

    <!–   Manifest-file for OSSH, put this file
    in

           
    /var/svc/manifest/network/ossh.xml

           
    and run #svccfg import /var/svc/manifest/network/ossh.xml

    –>

    <service_bundle type=’manifest’ name=’SMCossh432:ossh’>

     

    <service

         
    name=’network/ossh

         
    type=’service’

         
    version=’1′>

     

         
    <create_default_instance enabled=’false’ />

     

         
    <single_instance />

     

         
    <dependency name=’fs-local’

               
    grouping=’require_all

               
    restart_on=’none’

               
    type=’service’>

               
    <service_fmri

                     
    value=’svc:/system/filesystem/local’
    />

         
    </dependency>

     

         
    <dependency name=’fs-autofs

               
    grouping=’optional_all

               
    restart_on=’none’

               
    type=’service’>

               
    <service_fmri value=’svc:/system/filesystem/autofs‘ />

         
    </dependency>

     

         
    <dependency name=’net-loopback’

               
    grouping=’require_all

               
    restart_on=’none’

               
    type=’service’>

               
    <service_fmri value=’svc:/network/loopback’
    />

         
    </dependency>

     

         
    <dependency name=’net-physical’

               
    grouping=’require_all

               
    restart_on=’none’

               
    type=’service’>

               
    <service_fmri value=’svc:/network/physical’
    />

         
    </dependency>

     

         
    <dependency name=’utmp

               
    grouping=’require_all

               
    restart_on=’none’

               
    type=’service’>

               
    <service_fmri value=’svc:/system/utmp‘ />

         
    </dependency>

     

         
    <dependency name=’config_data

               
    grouping=’require_all

               
    restart_on=’restart’

               
    type=’path’>

               
    <service_fmri

               
        value=’file://localhost//usr/local/etc/sshd_config’
    />

         
    </dependency>

      

         
    <exec_method

               
    type=’method’

               
    name=’start’

               
    exec=’/lib/svc/method/ossh
    start’

               
    timeout_seconds=’60’/>

     

         
    <exec_method

               
    type=’method’

               
    name=’stop’

               
    exec=’/lib/svc/method/ossh
    stop’

               
    timeout_seconds=’60’ />

     

         
    <exec_method

               
    type=’method’

               
    name=’refresh’

               
    exec=’/lib/svc/method/ossh
    restart’

               
    timeout_seconds=’60’ />

     

         
    <property_group name=’startd

               
    type=’framework’>

               
    <!– sub-process core dumps shouldn’t restart
    session –>

               
    <propval name=’ignore_error

               
        type=’astring
    value=’core,signal‘ />

         
    </property_group>

     

           
    <property_group name=’general’
    type=’framework’>

                   
    <!– to start stop sshd
    –>

                   
    <propval name=’action_authorization
    type=’astring

                           
    value=’solaris.smf.manage.ssh
    />

           
    </property_group>

     

         
    <stability value=’Unstable’ />

     

         
    <template>

               
    <common_name>

                     
    <loctext xml:lang=’C’>

                     
    SSH server

                     
    </loctext>

               
    </common_name>

               
    <documentation>

                     
    <manpage title=’sshd
    section=’8’ manpath=’/usr/local/man’
    />

               
    </documentation>

         
    </template>

     

    </service>

     

    </service_bundle>

Importáljuk az új SMF-service-t
# svccfg import /var/svc/manifest/network/ossh.xml
# svcs ossh

Indítsuk el az új OSSH SMF service-t
# svcadm enable ossh
# svcs ossh

Új csatlakozás

Ha most újracsatlakozunk, akkor a kliensünk figyelmeztetni fog, hogy a fingerprint-je megváltozott az SSH servernek, és lehet, hogy át akarnak minket ejteni. Mi viszont tudjuk, hogy ezt mi csináltuk, és az új OpenSSH miatt van az egész. Fogadjuk el nyugodtan és lépjünk is be.

Végszó

Ne felejtsük el, hogy az új OpenSSH új SMF service néven fut. Lehet nagy keveredés miatta. Főleg ha mindkettőt elindítjuk, vagy épp azt hisszük, a disabled “ssh” service miatt nem megy semmi.