Rdesktop
Содержание:
EXIT VALUES
- RDP session terminated normally
- 1
- Server initiated disconnect (also returned for logoff by XP joined to a domain)
- 2
- Server initiated logoff
- 3
- Server idle timeout reached
- 4
- Server logon timeout reached
- 5
- The session was replaced
- 6
- The server is out of memory
- 7
- The server denied the connection
- 8
- The server denied the connection for security reason
- 9
-
The user cannot connect to the server due to insufficient access
privileges - 10
-
The server does not accept saved user credentials and requires that
the user enter their credentials for each connection - 11
- Disconnect initiated by administration tool
- 12
- Disconnect initiated by user
- 16
- Internal licensing error
- 17
- No license server available
- 18
- No valid license available
- 19
- Invalid licensing message
- 20
- Hardware id doesn’t match software license
- 21
- Client license error
- 22
- Network error during licensing protocol
- 23
- Licensing protocol was not completed
- 24
- Incorrect client license enryption
- 25
- Can’t upgrade license
- 26
- The server is not licensed to accept remote connections
- 62
- The local client window was closed
- 63
- Some other, unknown error occured
- 64
- Command line usage error
- 69
- A service or resource (such as memory) is unavailable
- 70
- An internal software error has been detected
- 71
- Operating system error
- 76
-
Protocol error or unable to connect to remote host.
Сценарий 1
Использование OMI сервера, работа по WinRM (PSRP) (детали ниже).
Установка последней версии PowerShell в Windows
Устанавливается одной командой:
После установки запускается командой (Ctrl +R):
pwsh
Смотрим детали по установленному релизу PS:
$PSVersionTable
Установка PowerShell в Linux
Устанавливается досточно просто, необходимо скопировать MS репо-конфиг из официального репозитория:
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/microsoft.repo
Установить PowerShell:
yum install powershell -y
Запустить командой:
pwsh
Проверить версию:
$PSVersionTable
Установка PSRP в CentOS
Что такое PSRP — PowerShell Remoting Protocol который используется в Открытой Инфраструктуре Управления (Open Management Infrastructure (OMI))
- Что такое PSRP
- Что такое OMI
В данном случае достаточно будет установить в наш CentOS — PSRP Server. Rpm пакет можно загрузить из официльного репозитория PSRP, в моем случае на момент написание статьи этот вариант так-же работоспособен:
yum install https://github.com/PowerShell/psl-omi-provider/releases/download/v1.4.1-28/psrp-1.4.1-28.universal.x64.rpm
После установки в системе появляется и запускается новый system unit — omid:
systemctl status omid ● omid.service - OMI CIM Server Loaded: loaded (/usr/lib/systemd/system/omid.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2020-04-19 09:18:08 EDT; 13min ago Process: 4558 ExecStart=/opt/omi/bin/omiserver -d (code=exited, status=0/SUCCESS) Process: 4457 ExecStartPre=/opt/omi/bin/support/installssllinks (code=exited, status=0/SUCCESS) ...
Появляется новый листенер на порту 5986 (кто не знает, это WinRM):
×В моем случае используется IPv4 (по умолчанию OMI сервер использует IPv6, если он включен. На всякий случай — как отключить IPv6 в CentOS)
Разрешаем порт в firewalld:
firewall-cmd --permanent --add-port=5986/tcp
firewall-cmd --reload
Подключение PowerShell SSH (Windows > Linux)
Создаем объект для хранения SSH кред:
$creds = Get-Credential
Объект с параметрами подключения:
$opt = New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck
Подключаемся к Linux машине:
Enter-PSSession -ComputerName 'xxx.xxx.xx.x' -Credential $creds -Authentication basic -UseSSL -SessionOption $opt
Пример удаленного вызова команды
Здесь подразумеваю Invoke-Command:
Invoke-Command -ComputerName xxx.xxx.xx.x -ScriptBlock { Get-Process } -Authentication Basic -SessionOption $opt -Credential $creds -UseSSL | Select-Object -First 5
Удаленный запуск скриптов
На стороне Windows можно создать скрипт и исполнить его на удаленной Linux машине, например PS скрипт, который отображает информацию о сетевых интерфейсах:
function Get-IPConfig {
::GetAllNetworkInterfaces() | ForEach-Object {
$ipProperties = $_.GetIPProperties()
$addresses = $ipProperties.UnicastAddresses |
Where-Object {
$_.Address.AddressFamily -eq 'InterNetwork'
} | ForEach-Object {
"$($_.Address) $($_.IPv4Mask)"
}
$gateway = $ipProperties.GatewayAddresses.Address |
Where-Object {
$_.AddressFamily -eq 'InterNetwork' -and
$_ -ne '0.0.0.0'
}
@{
Name = $_.Name
Id = $_.Id
Addresses = $addresses
Gateway = $gateway
}
} | Where-Object { $_.Addresses }
}
Get-IPConfig
Далее можно вызвать этот скрипт используя Invoke-Command:
Invoke-Command -ComputerName xxx.xxx.xx.x -FilePath 'c:\test\get-linuxip.ps1' -Authentication Basic -SessionOption $opt -Credential $creds -UseSS
Проблемы OMID SSL
На одной из тестовых машин, во время подключения стало возникать сообщение о том, что срок действия сертификата истек, решение — перейти в каталог:
cd /etc/opt/omi/ssl/
Создаем резервные копии, того, что есть:
mv omikey.pem omikey.pem.bak mv omi.pem omi.pem.bak mv ssl.cnf.pem ssl.cnf.bak
В конфиг ssl.conf добавляем следующие параметры:
basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth, clientAuth subjectAltName = DNS: Linux-Server-Name, IP:xxx.xxx.xx.x
Генерируем SSL сертификаты:
openssl genrsa -out omikey.pem 2048 openssl req -new -key omikey.pem -out Request.csr -config ssl.cnf openssl x509 -req -days 365 -signkey omikey.pem -in Request.csr -out omi.pem -extensions v3_req -extfile ssl.cnf
Перезапускаем omid:
systemctl restart omid
Сейчас мы разберем на примерах, как монтировать общую папку Windows вручную и автоматически.
Создадим на нашем Linux директорию, к которой мы будем монтировать сетевой ресурс. Назовем ее myshare и расположена она будет в каталоге /mnt
$ sudo mkdir /mnt/myshare
Сетевой ресурс (шара) Windows может быть примонтирован к ОС Ubuntu или Debian с помощью следующей команды:
$ sudo mount -t cifs -o username=user,password=Passw0rd //WINDOWS_HOST_IP/share /mnt/myshare
Где:
WIN_HOST_IP — это IP адрес хоста Windows, на котором расположена общая папка
share — имя сетевого ресурса
user — наш пользователь и Passw0rd — пароль с которыми мы подключемся к шаре.
Если пользователь доменный, то необходимо в опциях (-o) указать домен.
$ sudo mount -t cifs -o username=user,password=Passw0rd,domain=domain_name //WIN_HOST_IP/share /mnt/myshare
По-умолчанию сетевой ресурс монтируется с полными правами (rwx или 777). Если Вы хотите установить иные права, используйте опции dir_mode и file_mode.
$ sudo mount -t cifs -o username=user,password=Passw0rd,dir_mode=0755,file_mode=0755 //WIN_HOST_IP/share /mnt/myshare
Так же Вы можете установить владельцев uid (id пользователя) и gid (id группы).
$ sudo mount -t cifs -o username=user,password=Passw0rd,uid=1000,gid=1000,dir_mode=0755,file_mode=0755 //WIN_HOST_IP/share /mnt/myshare
Если после выполнения предыдущих команд Вы не получили никаких ошибок, то можете с помощью команды df -h убедиться, что сетевой ресурс успешно примонтирован к нашему ПК на Linux. В примере WIN_HOST_IP = 192.168.1.100 и имя общей папки share
$ df -h Filesystem Size Used Avail Use% Mounted on udev 3,9G 0 3,9G 0% /dev tmpfs 787M 2,2M 785M 1% /run /dev/sda2 450G 23G 405G 6% / tmpfs 3,9G 705M 3,2G 18% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup //192.168.1.100/share 1000G 108G 82G 11% /mnt/myshare
Rdesktop
touch /usr/share/rdesktop/keymaps/rus_mod
И заполняем этот файл:
editor /usr/share/rdesktop/keymaps/rus_mod
вот этим содержанием:
include modifiers # # Arrow keys # Left 0xcb localstate Up 0xc8 localstate Down 0xd0 localstate Right 0xcd localstate # # Numpad # Num_Lock 0x45 KP_Divide 0xb5 localstate KP_Multiply 0x37 localstate KP_Subtract 0x4a localstate KP_Add 0x4e localstate KP_Enter 0x9c localstate KP_Decimal 0x53 numlock KP_Separator 0x53 numlock KP_Delete 0x53 KP_0 0x52 numlock KP_Insert 0x52 localstate KP_1 0x4f numlock KP_End 0x4f localstate KP_2 0x50 numlock KP_Down 0x50 localstate KP_3 0x51 numlock KP_Next 0x51 localstate KP_4 0x4b numlock KP_Left 0x4b localstate KP_5 0x4c numlock KP_Begin 0x4c localstate KP_6 0x4d numlock KP_Right 0x4d localstate KP_7 0x47 numlock KP_Home 0x47 localstate KP_8 0x48 numlock KP_Up 0x48 localstate KP_9 0x49 numlock KP_Prior 0x49 localstate # # Esc and Function keys # Escape 0x1 localstate F1 0x3b localstate F2 0x3c localstate F3 0x3d localstate F4 0x3e localstate F5 0x3f localstate F6 0x40 localstate F7 0x41 localstate F8 0x42 localstate F9 0x43 localstate F10 0x44 localstate F11 0x57 localstate F12 0x58 localstate # # Insert - PgDown # Insert 0xd2 localstate Delete 0xd3 localstate Home 0xc7 localstate End 0xcf localstate Page_Up 0xc9 localstate Page_Down 0xd1 localstate
# generated from XKB map ru - patch include common map 0x419 grave 0x29 asciitilde 0x29 shift asciicircum 0x07 shift backslash 0x2b bar 0x2b shift apostrophe 0x28 greater 0x34 shift less 0x33 shift
Строка для правильного подключения удаленного рабочего стола- скрипт bash:
#!/bin/bash rdesktop -f -u username -k rus_mod -p passw -r printer:hplj1018 -N -b 10.10.10.1
пример параметров:
-T "Winxp" -a 16 -k en-gb -g 1024x768 -x l -n TC -r usbrdr -r sound:local=alsa -r disk:usb=/media -r printer:LP1= "EpsonLQ2180" -r lptport:LPT1=/dev/bus/usb/004/002 10.11.10.5:3389
имя принтера смотреть на пользовательской машине в
/etc/cups/printer.conf
* ! Внимание, для правильной печати через rdesktop необходимо установить CUPS-BSD…
INFO
Тонкие клиенты не требовательны к железу (поскольку все вычисления выполняет
мощный сервер) и заточены для работы в бездисковом режиме (без FDD/CDROM/HDD).
В качестве тонкого клиента под управлением Thinstation может выступать
любой компьютер на базе архитектуры x86 с процессором не ниже Pentium 100 и
объемом оперативной памяти не менее 16 Мб.
Как правило, на терминальных серверах используется общесистемное программное
обеспечение Windows, Linux, xBSD, Solaris, а тонкие клиенты функционируют под
управлением Windows CE, Linux или xBSD.
Thinstation — мини-дистрибутив Linux, позволяющий превратить старые
компы в полноценные бездисковые тонкие клиенты, поддерживающие все основные
протоколы подключения: RDP, VNC, ICA, X11, Telnet, SSH и т.п.
Thinstation можно загружать по сети с помощью Etherboot/PXE или со
стандартного носителя — FDD/CD/HDD/CF/USB-flash.
PXE (Pre-boot eXecution Environment) — среда предзагрузочного выполнения.
О том, как настроить сервер терминалов в Win2k3, можно узнать из статьи «Один
на всех и все на одного», опубликованной вавгустовском номере ][
за 2007 год.
Как установить TeamViewer на Ubuntu?
По этой ссылке можно скачать нужный пакет для Ubuntu и установить его одним щелчком. Единственная трудность возникает у владельцев 64 битных систем. У меня программа не устанавливалась ни в какую, постоянно какие то несовместимости зависимостей. Как решить проблему.
Ставим дополнительные пакеты такой командой:
sudo apt-get install libxtst6:i386 libxrandr2:i386
Далее скачиваем 32 битный пакет и устанавливаем его без проблем. А если буду проблемы, то можно установить его примерно такой командой:
sudo dpkg -i teamviewer_linux*.deb
Вот как подключиться к удаленному компьютеру, ничего сложного. Таким образом, TeamViewer станет оптимальным решением для опытных пользователей, у которых близкие и друзья часто просят о помощи в выполнении различных операций с компьютерами. Помогает часто он и мне 🙂
Не нашли ответ на свой вопрос? Воспользуйтесь поиском…
В чем разница Ubuntu Desktop или Server
1. Графический интерфейс

Основные отличия Ubuntu Desktop от Server — это графический интерфейс и окружение рабочего стола. Первая имеет графический интерфейс, а вторая — нет. Это происходит потому, что большинство серверов работают без графического интерфейса. Вместо классической клавиатуры и мыши всё взаимодействие с сервером выполняется удалённо по сети. Для этого используется утилита SSH. Подробнее про SSH читайте в статье «как пользоваться SSH».
Конечно, в большинство дистрибутивов для сервера можно установить графическую оболочку, но по умолчанию её там нет. А некоторые вовсе не рассчитаны на использование вместе с графическим интерфейсом. Например, дистрибутив CoreOS для контейнеров имеет только командную строку.
2. Приложения

Версия Ubuntu Desktop по умолчанию содержит приложения для общего использования. Это офисные приложения, мультимедиа, веб-браузеры. Также у редакции Desktop есть несколько версий с различными окружениями рабочего стола. Тогда как версия для сервера содержит только базовый набор приложений плюс программы, необходимые для работы сервера. Сюда входят почтовый сервер, файловый сервер, веб-сервер, а также DNS-сервер, например bind9. Вы можете установить все эти программы в обычной версии Ubuntu, и многие так и делают, но здесь они есть по умолчанию.
Кроме того, в серверной версии предустановленны пакеты для управления облачной инфраструктурой (cloud-init, cloud-guest-utils), утилита curl, утилиты для работы с файловыми системами btrfs и xfs, библиотеки для организации lvm, гипервизор контейнеров lxd и программы для настройки RAID.
3. Процесс установки

Установка версии для домашнего использования выполняется в графическом интерфейсе. Здесь у вас есть два варианта установки. Это просто графический интерфейс или Live-система, в которой во время установки вы можете просматривать интернет-страницы, слушать музыку и смотреть фильмы. Здесь же можно открыть терминал и попытаться решить любые проблемы, возникшие во время установки.
Ubuntu Server не имеет графического установщика. Здесь инсталляция выполняется в псевдографическом установщике, в котором вы даже не можете пользоваться мышкой. Только клавиатура.
Настройка DHCP- и TFTP-сервера
Для загрузки PXE-образа с удаленной машины нам потребуется корректно
работающие DHCP- и TFTP-сервисы. ОС значения не имеет, – это может быть *nix или
Windows, главное, чтобы кто-то корректно ответил на DHCP-запрос, отправленный
сетевой картой, и выдал файлы по TFTP. Первым делом инсталлируем нужные пакеты
(пример для Ubuntu):
Затем обеспечиваем автозапуск сервисов. Для запуска TFTP через xinetd создаем
конфиг на основе шаблона:
Правим:
В /etc/xinetd.conf комментируем строку «only_from = localhost». Не забываем
по окончании настроек перезапустить xinetd:
Копируем PXE-образ, ядро, initrd и каталог с настройками, созданный по
окончании работы build скрипта, в /srv/tftp:
Проверяем работоспособность TFTP:
Если файл получен, значит, все в порядке. Переходим к настройке DHCP:
В каталоге boot-images/pxe находится готовый шаблон dhcpd.sample, который
можно использовать при создании своего конфига DHCP-сервера:
Чтобы внесенные изменения вступили в силу, перезапускаем DHCP-сервер:
Удаленный рабочий стол чрез RealVNC Viewer
Это родительская программа для TigerVNC, но содержит наименьшее количество опции. Тем не менее, приложение умеет автоматом определять VNC сервера, упрощая и ускоряя подключение. Изберите “Опции”, и Вы сможете изменять размер окна, прививая его под ваш монитор, работать в полноэкранном режиме и переопределять самодействующие параметры сжатия для принудительного отображения более 256 красок.
Подключение выполняется быстро и просто, но продуктивность отстает от других просмотрщиков VNC в данном тесте. Закреплялись существенные замедления при работе с рабочим столом и при пуске Armegatron, которые оценивались примерно в полсекунды. Технологические процессы матричного растрирования или дизеринга затрудняли работу, когда происходили глюки, во время тестирования это наблюдалось немного раз. Аналогичные проблемы наблюдались и с копиями RealVNC, какие включают меньшее количество опций.
TigerVNC представляется отдельной ветвью развития кодовой базы VNC, потому содержит участки кода из RealVNC и TightVNC, впрочем процесс разработки последних продолжается. Таким образом, RealVNC подсказывает менее эффективную версию TigerVNC и сработал в исследованиях не лучшим образом. Возможно поддержка передачи аудио струи улучшила бы мнение о продукте. Как бы то ни было, в случае негаданных обстоятельств, портативный автономный клиент будет хорошей вариантом.