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.