Заинтересовала меня возможность подключении к серверам через безопасное соединение ssh без ввода пароля. Можно конечно на основе авторизированных ключей, но как быть если нужно завести пользователей, просмотреть список уже присутствующих, удалить на iLo (Integrated Lights-Out).
Исходная система:
Ubuntu Desktop 10.10 x86
Сервер с iLo 2.
Проверяем наличие пакета в репозитариях:
ekzorchik@ekv:~$ aptitude search sshpass
p sshpass – Non-interactive ssh password authentication
ekzorchik@ekv:~$
Устанавливаем пакет:
ekzorchik@ekv:~$ sudo aptitude install sshpass
Смотрим версию пакета:
ekzorchik@ekv:~$ sshpass –V
sshpass 1.04
Подключимся к ilo с указанием пароля в командной строке:
, что есть iLo:
- Графический веб-интерфейс (GUI) — доступ к iLO из любого места через стандартный браузер.
- Virtual Power — полное удаленное управление питанием сервера.
- Remote text console — платформо-независимая текстовая консоль для отображения и управления активностью удаленного сервера, например, выключение или включение.
- Virtual Serial Port — доступ к последовательному порту через сеть таких приложений как Windows® Server 2003 Emergency Management Services и сессии TTY.
- Интерфейс командной строки и сценариев — гибкое использование, конфигурация и обслуживание.
- SSL шифрование — для всех данных между процессором iLO и браузером.
- Диагностика процессора iLO и сервера — детализированные отчеты, статус.
- DNS/DHCP.
- Удаленное обновление микропрограммы.
- IPMI через локальную сеть.
ekzorchik@ekv:~$ sshpass -p ‘<пароль>’ ssh Administrator@<ip_address_iLo_server>
Ошибка:
shell request failed on channel 0
Поправим конфигурационный файл:
ekzorchik@ekv:~$ sudo nano /etc/ssh/sshd_config
Поправить SyslogFacility AUTH на SyslogFacility AUTHPRIV
Подключаемся к ilo серверу с указанием расширенного лога подключения:
ekzorchik@ekv:~$ sshpass -p ‘пароль’ ssh -vv Administrator@<ip_address_iLo_server>
OpenSSH_5.5p1 Debian-4ubuntu6, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to <ip_address_iLo_server> [<ip_address_iLo_server>] port 22.
debug1: Connection established.
debug1: identity file /home/ekzorchik/.ssh/id_rsa type -1
debug1: identity file /home/ekzorchik/.ssh/id_rsa-cert type -1
debug1: identity file /home/ekzorchik/.ssh/id_dsa type -1
debug1: identity file /home/ekzorchik/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version mpSSH_0.0.1
debug1: no match: mpSSH_0.0.1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.5p1 Debian-4ubuntu6
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-dss,ssh-rsa
debug2: kex_parse_kexinit: 3des-cbc,aes128-cbc
debug2: kex_parse_kexinit: 3des-cbc,aes128-cbc
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-cbc hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-cbc hmac-md5 none
debug2: dh_gen_key: priv key bits set: 110/256
debug2: bits set: 534/1024
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host ‘<ip_address_iLo_server>‘ is known and matches the RSA host key.
debug1: Found key in /home/ekzorchik/.ssh/known_hosts:1
debug2: bits set: 515/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/ekzorchik/.ssh/id_rsa ((nil))
debug2: key: /home/ekzorchik/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/ekzorchik/.ssh/id_rsa
debug1: Trying private key: /home/ekzorchik/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LANG = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 1048576 rmax 2048
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel_input_status_confirm: type 100 id 0
shell request failed on channel 0
ekzorchik@ekv:~$
Предыдущий вывод помог:
ekzorchik@ekv:~$ env -u LANG /usr/bin/sshpass -p <пароль>@ ssh Administrator@<ip_address_iLo_server>
Посмотреть какие учетные записи есть на iLo:
</map1>hpiLO-> show /map1/accounts
status=0
status_tag=COMMAND COMPLETED
/map1/accounts
Targets
Administrator
keiz
ekzorchik
Properties
Verbs
cd version exit show create
Создание учетной записи:
</map1/accounts>hpiLO-> create username=cluster password=Aa1234567 group=oemhp_power
status=0
status_tag=COMMAND COMPLETED
User added successfully.
Создаем учетную запись с полными правами на ilo:
</map1/accounts>hpiLO-> create username=cluster password=Aa1234567 group=admin,config,oemhp_power,oemhp_rc,oemhp_vm
status=0
status_tag=COMMAND COMPLETED
User added successfully.
Смотрим через графический интефейс какие группы добавились. Видим полный доступ посредством административной консоли iLo.
Удаление учетной записи:
</map1/accounts>hpiLO-> delete /map1/accounts/cluster
status=0
status_tag=COMMAND COMPLETED
User deleted successfully.
Изменение пароля:
</map1/accounts>hpiLO-> set /map1/accounts/cluster password=Bb1234567
status=0
status_tag=COMMAND COMPLETED