Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [71]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [40]
Python [3]
Магнитольное [44]
Commodore64 [15]
Игровые приставки [2]


 
Дневник (2019 » Июнь » 20 в 22:29)
GNU/Linux MSYS2 - Ещё один ssh сервер под windows7, archbased!

MSYS2
Minimal SYStem
Пришло время разобраться с ещё одним способом развернуть на Шindows машине linux окружение, а именно реализовать ssh сервер для консольного доступа. Хотя по сути получается почти полноценное окружение linux без графического интерфейса, можно ставить и использовать почти любой консольный софт.

MSYS2 или CygWin?

* как установить cygwin я подробно описывал ранее в записи от 2019-04-11-1102

MSYS2 - это форк Cygwin, поэтому, если не испугает ручная установка ssh, то вопрос вообще не стоит.

Сравнительная таблица:


Cygwin
MSYS2
установка ПО
Нужно отдельно запускать
графический инсталятор cygwin
Ввести в консоли:
pacman -S progname
Настройка ssh
Просто запустить скрипт
ssh-host-config
и следовать инструкциям
скрипт есть на github, но
из-за ошибки мне пришлось всё
делать вручную.
Плюсы
Проще настроить демона ssh.
Основан на Arch Linux, консольный пакетный менеджер в базе, доступ к AUR репозиториям - есть почти всё!
Минусы
Нет консольного пакетного менеджера, ограниченный выбор софта в графическом и неудобность его использования.
Сложность ручной настройки sshd


Теперь, если вы решились, скачиваем дистрибутив и приступаем к установке. Она элементарна - далее-далее, готово!




Ещё проще, чем Cygwin. Теперь следует обновить софт стандартным консольным пакетным менеджером Arch Linux:
pacman -Syu

Выйти из терминала, запустить его снова, и завершить обновление:
pacman -Su

Всё, теперь можно установить необходимый софт, например.
pacman -S vim mc git python3

Установка пакетов ssh, и утилиты editrights.exe для редактирования прав доступа:
pacman -S cygrunsrv openssh mingw-w64-$(uname -m)-editrights

Установка ssh описана разработчиками в двух инструкциях, краткой вручную: https://gitlab.haskell.org/ghc/ghc/wikis/building/windows/sshd и подробно описанным bash скриптом: https://gist.github.com/samhocevar/00eec26d9e9988d080ac#file-gistfile1-sh.

Загрузить его в консоль и сделать исполнимым:
git clone https://gist.github.com/00eec26d9e9988d080ac.git
chmod +x ./gistfile1.sh

Нет, мы пойдём не таким пу­тём. Не таким путём надо идти.  /В.И. Ленин/
Только хардкор, только ручная установка с контролем над процессом!

В то время как в CygWin настройка sshd осуществляется с помощью предоставленного сценария оболочки ssh-host-config который создает необходимые учетные записи пользователей и устанавливает sshd в качестве системной службы в Windows, в MSYS2 эти шаги необходимо выполнить вручную.

Итак сделаем всё вручную в консоли MSYS2, запущенной от имени Администратора. Чтобы зоопарк кодировок Windows отображался нормально, сразу настроим терминал: ПКМ - option, тема Dracula, прозрачность low, курсор block, и самое главное Locale: RU_ru CP866 (или 1251 в зависимости от исполняемой команды, я же говорю, зоопарк)

Генерация ключей обоих типов в /etc/ssh.
ssh-keygen -A

Но лучше сделать это вручную (подробнее в 2016-12-20-868) в ~/.ssh
ssh-keygen -t rsa -b 2048

Назначение переменных для создания привелигерованного Windows пользователя cyg_server.

Указываем HOME для win пользователя cyg_server:
dos_var_empty=$(/usr/bin/cygpath -w /var/empty)

Создание пароля (нужен только для cygrunsrv), назначение имён пользователей, и имени группы администраторов:
_password=topsecret
username=cyg_server

unpriv_user=sshd

admin_user=$(whoami)

admingroup=$(/usr/bin/mkgroup -l | /usr/bin/awk -F: '{if ( $2 == "S-1-5-32-544" ) print $1;}')

По ряду причин отклик вызова net идёт в неверной кодировке, если не указывать её явно в свойствах терминала.
Команда выполняется без уведомления "выполнена успешно", и вываливает справку. Не пугайтесь, всё ок, это венда.

net user "${username}" "${_password}" /add /fullname:"Privileged server" /homedir:${dos_var_empty} /yes

 net localgroup "${admingroup}" "${username}" /add  

 net user "${unpriv_user}" /add /fullname:"${unpriv_user} privsep" "/homedir:${dos_var_empty}" /active:no  

Запретить истечение срока действия пароля:
passwd -e ${username}

Экспорт путей:
export PATH=/mingw64/bin/:/mingw32/bin:$PATH

Правка прав win пользователю cyg_server:
editrights -a SeAssignPrimaryTokenPrivilege -u ${username} && \
editrights -a SeCreateTokenPrivilege -u ${username} && \
editrights -a SeTcbPrivilege -u ${username} && \
editrights -a SeDenyRemoteInteractiveLogonRight -u ${username} && \
editrights -a SeServiceLogonRight -u ${username}

Если вдруг захочется посмотреть пользователя, есть ли он вообще:
net user ${username}

Назначение паролей:
 
pwd_entry="$(/usr/bin/mkpasswd -l -u "${username}" | /usr/bin/sed -n -e '/^'${username}'/s?\(^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\).*?\1'/var'/empty:/bin/false?p')"  

echo "${pwd_entry}" >> "/etc/passwd"   

pwd_entry="$(/usr/bin/mkpasswd -l -u "${unpriv_user}" | /usr/bin/sed -n -e '/^'${unpriv_user}'/s?\(^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\).*?\1'/var'/empty:/bin/false?p')"   
echo "${pwd_entry}" >> "/etc/passwd"
pwd_entry="$(/usr/bin/mkpasswd -l -u "${admin_user}")"
echo "${pwd_entry}" >> "/etc/passwd"

И наконец, регистрация сервиса с cygrunsrv. Внимание, вывод этой команды не в CP866, а в CP1251, поэтому чтобы видеть русские буквы отклика, нужно сменить кодировку в свойствах, а затем вернуть обратно.)

 /usr/bin/cygrunsrv -I sshd -d "CYGWIN sshd" -p /usr/bin/sshd -a "-D" -y tcpip -u cyg_server -w "${_password}"  


Не пугайтесь., если вышла ошибка "Error installing a service: OpenService Win32 error 1073" Указанная служба уже существует, следует её просто удалить, и затем попробовать снова:
sc.exe delete sshd
Конфиг /etc/ssh/sshd_config можно не трогать, но я вручную прописал туда параметры:
Port 22
PasswordAuthentication no

Теперь можно или перезагрузиться, или вручную в этом сеансе запустить демана sshd. Вот команды для его запуска и на всякий случай, останова:
net start sshd
net stop sshd

Если нет доступа к серверу извне, но локально (ssh localhost) он работает, нужно открыть порт 22 в брандмауэре, как это сделать я описывал в записи 2019-04-13-1103, можно не вникать, а просто добавить это правило:
netsh advfirewall firewall add rule name="sshd" dir=in protocol=TCP localport=22 action=allow 

Если после успешной авторизации на сервере появляется ошибка:
lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory

То просто сделайте touch на эти файлы.
touch /var/log/lastlog

Памятка - для конвертирования вывода некоторых windows утилит в нормальную кодировку придётся использовать конструкцию с пайпом в конце команды, например:
net use | iconv -f CP866 
Note: Иногда вместо 866 используется кодировка 1251


Почему-то в корне не выводятся диски windows по ls. Получить доступ к дискам файловых систем Windows можно так:
/c/ - для диска "С",
/d/ - для диска "D", и аналогично...


Категория: GNU/Linux | Просмотров: 1598 | Добавил: harushima | Теги: Windows | Рейтинг: 0.0/0 |
Всего комментариев: 4.

05.07.2020 16:29
1 harushima
0  
Под 10й команда не срабатывала, пришлось явно уазывать имена и выполнять из-под cmd

net user cyg_server topsecret /add /fullname:"Privileged server" /homedir:C:\msys64\var\empty /yes

net localgroup Администраторы cyg_server /add

net user sshd /add /fullname:"sshd privsep" "/homedir:C:\msys64\var\empty" /active:no


06.07.2020 00:23
2 harushima
0  
Закрыть консоль управления службами:
taskkill /F /IM mmc.exe

Узнать теккущее состояние службы:
sc queryex sshd


26.10.2021 13:29
3 harushima
0  
https://www.linux.org.ru/forum/talks/15621121

Если кому-то нужен MSYS2 для Windows XP, то они сохранили репу в которой все пакеты ещё поддерживают Windows XP:
http://repo.msys2.org/distrib/i686/msys2-i686-20160205.exe
Только не стоит её обновлять, лишь устанавливать пакеты. Там gcc 5.3.0 и clang 3.7.0


07.11.2021 18:33
4 harushima
0  
Надо исправить пост, добавив рабочие примеры!

Добавить пользователя для сервера msys2:
net user username password /add /fullname:"Privileged server" /homedir:C:\msys64\var\empty /yes

Добавить пользователя в группу Администраторов:
net localgroup Администраторы msys2 /add

Если что-то пошло не так, удалить пользователя:
net user msys2 /delete

Создать демона:
/usr/bin/cygrunsrv -I sshd -d "msys2" -p /usr/bin/sshd -a "-D" -y tcpip -u "username" -w "password"

Дать пользователю все нужные права:
username=msys2 && editrights -a SeAssignPrimaryTokenPrivilege -u ${username} && editrights -a SeCreateTokenPrivilege -u ${username} && editrights -a SeTcbPrivilege -u ${username} && editrights -a SeDenyRemoteInteractiveLogonRight -u ${username} && editrights -a SeServiceLogonRight -u ${username}

В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous

Календарь
«  Июнь 2019  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 161
Гостей: 161
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы