Вначале скачиваем RPM с утилитой (Solarflare Linux Utilities RPM (64bit)) с сайта производителя.
Затем на сервере выполняем команду:
sfupdate
Solarstorm firmware update utility [v6.0.0]
Copyright Solarflare Communications 2006-2015, Level 5 Networks 2002-2005
eth0 - MAC: **-**-**-**-**-**
Firmware version: v6.1.0
Controller type: Solarflare SFC9000 family
Controller version: v3.3.2.1000
Boot ROM version: v4.5.2.1010
The Boot ROM firmware is up to date
The controller firmware is up to date
eth1 - MAC: **-**-**-**-**-**
Firmware version: v6.1.0
Controller type: Solarflare SFC9000 family
Controller version: v3.3.2.1000
Boot ROM version: v4.5.2.1010
The Boot ROM firmware is up to date
The controller firmware is up to date
В данном примере прошивки на адаптерах последней версии, но если потребуется обновление, то выполняем команду:
sfupdate --write
Соглашаемся (Y, Enter) и ждем окончания процесса обновления.
На всякий случай напомню, что в процессе обновления может пропасть доступ к серверу по сети, потому обновление лучше выполнять не через ssh, а находясь у непосредственно сервера или используя системы удаленного управления, поставляемые вместе с сервером (iDRAC (Dell), IMM (IBM), iLO (HP) etc.)
Показаны сообщения с ярлыком ssh. Показать все сообщения
Показаны сообщения с ярлыком ssh. Показать все сообщения
16 июл. 2016 г.
14 мар. 2014 г.
Определение и вызов fabric task в одном Python скрипте
Библиотека fabric для Python является хорошим средством для автоматизации действий (админимстрирования, deployment и т. д.) для инфраструктуры серверов под управлением ОС Linux. Библиотека использует протокол open ssh для выполнения команд и перемещения данных.
Подробнее о библиотеке можно прочитать на официальном сайте или здесь.
Бывают ситуации, когда необходимо в одном скрипте и объявить таск из библиотеки fabric и выполнить его.
Пример структуры такого скрипта:
Для того, чтобы скрипт выполнялся "тихо" - без запросов на ввод пароля для удаленного пользователя, необходимо организовать доступ на удаленноый сервер с помощью ssh-ключей, например как я описывал здесь.
Update:
Для передачи аргументов в скрипт, указываем их перед hosts=.
Для передачи xargs, можно указывать их также до или после hosts=
Подробнее о библиотеке можно прочитать на официальном сайте или здесь.
Бывают ситуации, когда необходимо в одном скрипте и объявить таск из библиотеки fabric и выполнить его.
Пример структуры такого скрипта:
#!/usr/bin/env python # Script dependencies: python-devel, fabric (https://github.com/fabric/fabric/archive/master.zip) # Usage: python script.py import fabric from fabric.api import * # Define ssh-like address user@server_hostname remote_host = user@server def some_fab_task(): # Define fabric task here # hide('everything') helps to execute task with minimum output to console with settings(hide('everything')): try: .... except: .... # Main function if __name__ == '__main__': # Call fabric task from here fabric.tasks.execute(some_fab_task, hosts=[remote_host])
Для того, чтобы скрипт выполнялся "тихо" - без запросов на ввод пароля для удаленного пользователя, необходимо организовать доступ на удаленноый сервер с помощью ssh-ключей, например как я описывал здесь.
Update:
Для передачи аргументов в скрипт, указываем их перед hosts=.
fabric.tasks.execute(some_fab_task, arg1, arg2, hosts=[remote_host])
Для передачи xargs, можно указывать их также до или после hosts=
fabric.tasks.execute(some_fab_task, arg1, arg2, hosts=[remote_host], xarg1=value1)
18 нояб. 2013 г.
Запуск графических приложений на удаленной Linux-машине с помощью Putty и Xming (export display)
Суть задачи в следующем. Есть у нас сервер, на котором нету X-сервера, только консоль. А нам нужно, к промеру, установить Oracle Solaris Studio и запусктаь ее удаленно. Или какое-то другое приложение, работающее в GUI-режиме.
Для решения этой задачи выполняем следующее.
1. На сервере устанавливаем пакеты xauth и xterm. Например, для Oracle Linux (или другого RHEL):
yum install xauth xterm
2. Также, нужно проверить, включено ли X11 Forwarding в конфигурационном файле SSH-демона:
nano /etc/ssh/sshd_config
X11Forwarding yes
3. Eсли вы заходите с помощью Windows-машины, то вам необходимо установить Xming - X-эмулятор для форточек. Ну и, собсно, сам Putty - ssh-клиент для Windows.
Для решения этой задачи выполняем следующее.
1. На сервере устанавливаем пакеты xauth и xterm. Например, для Oracle Linux (или другого RHEL):
yum install xauth xterm
2. Также, нужно проверить, включено ли X11 Forwarding в конфигурационном файле SSH-демона:
nano /etc/ssh/sshd_config
X11Forwarding yes
7 нояб. 2012 г.
SSH tunneling
Пробросить порт с помощью ssh довольно просто:
ssh -R localip:localport:remoteip:remoteport localuser@localip
пример: 192.168.1.1:8080:192.168.2.1:80 root@192.168.1.1
Т. е. порт на той машине, где запущена эта команда будет форвардиться на порт на удаленной машине. Например, локальная машина имееть vpn-подключение, недоступной другим машинам и они могут через нее коннектиться к какомуто серверу на другом конце vpn.
В примере все запросы на порт 8080 машины 192.168.1.1 будут идти на порт 80 машины 192.168.2.1 и, соответственно, ответы будут приходить обратно. В общем, примерно то же, что и port forwarding в роутере.
ssh -R localip:localport:remoteip:remoteport localuser@localip
пример: 192.168.1.1:8080:192.168.2.1:80 root@192.168.1.1
Т. е. порт на той машине, где запущена эта команда будет форвардиться на порт на удаленной машине. Например, локальная машина имееть vpn-подключение, недоступной другим машинам и они могут через нее коннектиться к какомуто серверу на другом конце vpn.
В примере все запросы на порт 8080 машины 192.168.1.1 будут идти на порт 80 машины 192.168.2.1 и, соответственно, ответы будут приходить обратно. В общем, примерно то же, что и port forwarding в роутере.
8 окт. 2012 г.
Доступ на ESXi сервер через ssh по ключу
Доступ по ключу удобная штука, и не заменимая при автоматизации.
Для реализации доступа по ключу создаем пару ключей, как я присал в этой статье. Затем, если мы хотим заходить на пользователя root по ключу, то выполняем команду (изменив данные на свои):
cat ~/.ssh/id_dsa.pub | ssh root@esxi.machine.com 'cat >> /etc/ssh/keys-root/authorized_keys'
Для реализации доступа по ключу создаем пару ключей, как я присал в этой статье. Затем, если мы хотим заходить на пользователя root по ключу, то выполняем команду (изменив данные на свои):
cat ~/.ssh/id_dsa.pub | ssh root@esxi.machine.com 'cat >> /etc/ssh/keys-root/authorized_keys'
Ключи в ESXi хранятся в файле /etc/ssh/keys-ИМЯ_ПОЛЬЗОВАТЕЛЯ/authorized_keys.
Тестируем (не забываем, что в папке ~/.ssh того пользователя, под которым ходим, должен быть приватный ключ с владельцем этот пользователь и правами 400):
ssh root@esxi.machine.com
27 сент. 2012 г.
vSphere Client не может подключиться к ESXi
Вы вводите заведомо валидные данные, и после паузы выпрыгивает ошибка типа такой:
The server 'my.host.name' could not interpret the client's request. (The remote server returned an error: (503) Server Unavailable
Call "ServiceInstance.RetrieveContent" for object "ServiceInstance" on Server "my.host.name" failed.
При это с помощью SSH нормально можно зайти на хост. Точнее, нужно зайти и выполнить команду:
/sbin/services.sh restart
После завершения всех действий команды (когда вы опять увидите приглашение командной строки) можно будет снова зайти на ESXi гипервизор с помощью vSphere Client.
The server 'my.host.name' could not interpret the client's request. (The remote server returned an error: (503) Server Unavailable
Call "ServiceInstance.RetrieveContent" for object "ServiceInstance" on Server "my.host.name" failed.
При это с помощью SSH нормально можно зайти на хост. Точнее, нужно зайти и выполнить команду:
/sbin/services.sh restart
После завершения всех действий команды (когда вы опять увидите приглашение командной строки) можно будет снова зайти на ESXi гипервизор с помощью vSphere Client.
11 сент. 2012 г.
18 нояб. 2011 г.
Использование hosts.deny и hosts.allow
Бывают ситуации, когда надо заблокировать доступ злоумышленникам на наш компьютер. Если разбираться с правилами iptables не нужно, то самое простое решение - добавить ip злоумышленника в hosts.deny. А hosts.allow служит как раз для противоположной цели
Синтаксис этих файлов очень прост:
<служба или ALL>: <IP-адрес или имя хоста или подсеть>
Так, например, если мы хотим блокировать все smtp-пакеты, идущие к нашему серверу от mail.test.ru, нам необходимо ввести в файл hosts.deny следующую строчку:
smtp: mail.test.ru
Для ssh:
sshd: 210.123.134.56
А если мы хотим запретить подключение по ssh всем, кроме локальной сети, то:
Синтаксис этих файлов очень прост:
<служба или ALL>: <IP-адрес или имя хоста или подсеть>
Так, например, если мы хотим блокировать все smtp-пакеты, идущие к нашему серверу от mail.test.ru, нам необходимо ввести в файл hosts.deny следующую строчку:
smtp: mail.test.ru
Для ssh:
sshd: 210.123.134.56
А если мы хотим запретить подключение по ssh всем, кроме локальной сети, то:
/etc/hosts.deny
sshd: ALL
/etc/hosts.allow
sshd: 192.168.1.
В этом примере 192.168.1. значит 192.168.1.0..255
Всем удачи :)
14 нояб. 2011 г.
SCP - утилита копирования файлов по LAN/WAN
Часто возникает задача скопировать файл (например, конфиг) с одной Linux машины на другую. Если надо скопировать 1-2 файла, то поднимать FTP сервер нет смысла - проще воспользоваться командой SCP, которая копирует файлы по протоколу SSH.
Пример копирования из машины-источника (назовем ее так) на нашу:
scp -P 230 root@192.168.1.5:/etc/ssl/server.key /etc/ssl/
Пример копирования из машины-источника (назовем ее так) на нашу:
scp -P 230 root@192.168.1.5:/etc/ssl/server.key /etc/ssl/
30 сент. 2011 г.
Авторизация пользователя по ssh с использованием rsa-ключа
Есть такая фишка в ssh - авторизация пользователя не по паролю, а по ключу. Это удобно если... да просто удобно) если у вас куча серверов или несколько людей могут их админить. В общем, постановка задачи есть - выполняем.
1. Создание rsa-ключа.
Вначале на той машине, с которой хотите ходить везде (т. е. например, ваша рабочая) создаем пару ключей:
ssh-keygen -t dsa
Отвечаем на вопросики, даем или не даем (не рекомендуется, иначе зачем мы вс это делаем?) пароль на ключик.
Получаем пару файлов - публичный и приватный ключ. Публичный ключ, который мы будем копировать на сервера, на которые хотим заходить по ключу называется:
id_dsa.pub
2. User management
Далее опциональные шаги. Заходим на целевой сервер и:
1. Создаем юзера командой useradd name_of_user
2. Создаем пароль нашему юзеру командой passwd name_of_user
3. Добавляем пользователя в файл /etc/sudoers (если sudo не установлен и файлика нет - устанавливаем apt-get install sudo или типа того) после похожей записи рута и изменяем или комментируем строчку требования пароля:
2. Создаем пароль нашему юзеру командой passwd name_of_user
3. Добавляем пользователя в файл /etc/sudoers (если sudo не установлен и файлика нет - устанавливаем apt-get install sudo или типа того) после похожей записи рута и изменяем или комментируем строчку требования пароля:
Defaults !requiretty
Затем после строчки %sudo ALL=(ALL) ALL пишем:
name_of_user ALL=(ALL) NOPASSWD:ALL
Затем после строчки %sudo ALL=(ALL) ALL пишем:
name_of_user ALL=(ALL) NOPASSWD:ALL
Теперь команда sudo su - не будет запрашивать пароль.
3. Копирование ключа на удалённый сервер
Есть два пути:
а) копируем ключ автоматически. Для этого на сервере, где есть публичный ключ, выполняем:
ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote-host
где параметром -i передается путь в публичному ключу и кладется в папку .ssh указанного пользователя со всеми правами автоматически.
б) копируем вручную. Для этого заходим в хомяк пользователя на удаленном сервере, создаем там папку .ssh, а в ней файл authorized_keys, в который копируем наши публичные ключи - смотрите, чтобы каждый ключик был в одну строчку!
Изменяем владельца наших файлов/директорий - ссх очень чувствителен к этому.
chown -R name_of_user:name_of_user .ssh
chmod 700 .ssh
chmod 400 .ssh/authorized_keys
Изменяем владельца наших файлов/директорий - ссх очень чувствителен к этому.
chown -R name_of_user:name_of_user .ssh
chmod 700 .ssh
chmod 400 .ssh/authorized_keys
Всё, теперь мы можем зайти удаленно на наш сервер по ssh не указывая пароль нашего пользователя и командой sudo su - сразу превратиться в рута без вопросов :)
4. Способы авторизации на удалённом сервере по ключу
Один из способов был указан ранее.
Далее просто командой c указанием пути к ключу:
ssh -i /path/to/key/key.pem user@server
И ещё один вариант - добавить конфиг файл. Осбенно хорошо когда серверов несколько.
Добавляем в папку вашего пользователя на клиенте:
nano /home/your_user/.ssh/config
следующее:
Host server1 server1.company.com
Hostname 192.168.1.2
User username
IdentityFile /path/to/key/key1.pem
Host server2 server2.company.com
Hostname server2.com
User username
IdentityFile /path/to/key/key2.pem
И потом можно сразу заходить командами вида:
ssh server1
ssh server2
Update 1.
Столкнулся с ситуацией, когда всё проделанное выше не работало для удаленного сервера Oracle Linux 6.8 (аналог RHEL/CentOS 6.8) пока я не выполнил команды:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
restorecon -R -v /root/.ssh
restorecon -R -v /root/.ssh
Несмотря на то, что Selinux был выключен.
Update 2.
Описанные в начале команды для новых систем Debian/Ubuntu не сработали. Потому создаём ключи другого формата:
Создаём ключи на сервере1:
ssh-keygen -t rsa -b 4096 -C "domain.com"
Копируем ключи на сервер2:
ssh-copy-id user@server2
Дролжны получить такой результат:
"
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@server2's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@server2.
"
Проверяем:
ssh user@server2
Ссылки:
- http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt
- https://linuxhint.com/generate-ssh-key-ubuntu/
Подписаться на:
Сообщения (Atom)