Показаны сообщения с ярлыком ssh. Показать все сообщения
Показаны сообщения с ярлыком ssh. Показать все сообщения

воскресенье, 9 апреля 2023 г.

Проблема с подключением по ssh к Slackware 12.0

Проблема выглядит так:

$ ssh  huhmuh@192.168.0.13
Unable to negotiate with 192.168.0.13 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

Решение:

ssh  -oHostKeyAlgorithms=+ssh-dss  huhmuh@192.168.0.13

Литература:

Unable to negotiate with port 22: no matching host key type found. Their offer: ssh-dss

четверг, 10 сентября 2020 г.

Linux+Windows: Доступ из MS Windows к оконным приложениям X Windows

Захотелось поработать удалённо с оконными приложениями линукса. Насколько я знаю, линукс позволяет такие штуки - когда программа выполняется на одной машине, а окна рисует на другой - поэтому надеялся обойтись без средств удаленного доступа типа TeamViewer или VNC, и эта надежда отчасти оправдалась. Нужна лишь небольшая настройка.

1. Настраиваем линукс, на котором будут выполняться программы. У меня Slackware, но, думаю, под другими вариантами настройка будет примерно такой же. Нужно в конфигурационном файле /etc/ssh/sshd_config найти и раскомментировать следующие строки:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

2. Настраиваем Windows, которая будет заниматься отрисовкой окон. Оконные приложения в X11, как я понял, устроены хитро: приложение является клиентом, а окнами занимается сервер, которому, в принципе, всё равно где работать - на этой же машине или на соседней. Поэтому нужно поднять сервер X11. Мой выбор пал на Cygwin/X.

2.1. Устанавливаем Cygwin/X. Это несложный процесс: запускаем установщик cygwin, в которм выбираем для установки пакеты:

xorg-server
xinit
xorg-docs
xlaunch

2.2. Настраиваем Cygwin/X. Как выяснилось, "из коробки" у него не очень хорошо с подключениями tcp, переключением раскладки клавиатуры и глубиной цвета в rdp-сессии.

2.2.1. Переключение раскладки клавиатуры: в папке путь_установки_cygwin/home/имя_пользователя/ создаём файл .XWinrc с таким содержимым:

XKBLayout   us,ru
XKBModel    evdev
XKBOptions  grp:alt_shift_toggle
XKBRules    base
XKBVariant  ,winkeys 

Клавиатура будет переключаться по Alt+Shift. Если хотим Ctr+Shift, надо в XKBOptions указать grp:ctrl_shift_toggle.

2.2.2. Доступ по tcp: изменяем ярлык запуска сервера, дописывая в него параметр -listen tcp после двойного минуса (перед двойным минусом перечисляются параметры, относящиеся к клиенту, после него - к серверу):

путь_установки_cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin -- -listen tcp"

Сервер будет ожидать входящие подключения на 6000 порту.

2.2.3. Корректировка глубины цвета: если работа с Windows производится в RDP-сессии, как у меня, то окна отрисовываются почему-то с минимальной глубиной цвета, чуть ли не в 16-цветной палитре. Исправляет это параметр -nocompositewm. То есть, окончательно команда ярлыка запуска сервера приобретает следующий вид:

путь_установки_cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin -- -listen tcp -nocompositewm"

2.3. Настраиваем PuTTY. Переходим в категорию Connection -> SSH -> X11 и выставляем там параметры:

Enable X11 Forwarding              -> true
X11 Location                       -> :0.0
Remote X11 authentication protocol -> MIT-Magic-Cookie-1
X authority file for local display -> путь_установки_cygwin\cygwin\home\имя_пользователя\.Xauthority

После всех настроек можно заходить через PuTTY на линуксовую машину и запускать на ней оконные приложения (xclock, xlogo, firefox и т.д.). Работает всё, правда, небыстро, но тут уж - как есть...

Литература:

http://tolik-punkoff.com/2016/11/21/nastrojka-x11-forwarding-cherez-ssh-s-pomoshhyu-putty-i-xming/

https://datacadamia.com/ssh/x11/cygwinx_remote_client#with_putty

https://stackoverflow.com/questions/34932495/forward-x11-failed-network-error-connection-refused

https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing

http://cygwin.1069669.n5.nabble.com/X-colormap-problem-when-viewed-via-Microsoft-Remote-Desktop-td132076.html

понедельник, 3 июня 2019 г.

ssh: аутентификация с помощью сертификатов

Пусть есть сервер с именем myServer, на котором создана учетная запись myUser, и есть клиентская машина, с которой мы хотим получить доступ по ssh под этой учетной записью, авторизовавшись с помощью сертификатов.

Будем считать, что машины "чистые", т.е., в каталогах ~/.ssh нет никаких файлов id_rsa.*

1. На клиенте: Переходим в каталог ~/.ssh и создаём там пару приватный ключ-открытый ключ командой:
ssh-keygen -t rsa
в результате в каталоге ~/.ssh образуются два файла: id_rsa (приватный ключ) и id_rsa.pub (открытый ключ).

2. На клиенте: Закидываем открытый ключ на сервер командой:
scp ~/.ssh/id_rsa.pub myUser@myServer:~/.ssh/

3. На сервере: Добавляем открытый ключ в файл authorized_keys командой:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub

После этого можно пробовать заходить на сервер myServerс помощью сертификата:
ssh myUser@myServer

В приниципе, эти ключи необязательно должны иметь имя id_rsa.* и храниться в папке ~/.ssh. Можно при подключении явно указывать имя файла, содержащего приватный ключ:
ssh myUser@myServer -i ~/myCustom_id_rsa

пятница, 10 октября 2014 г.

Linux: передача файлов между компьютерами

Вариант 1, с использованием утилиты scp:
scp   -P ssh-порт   полный-путь-до-моего-файла   удаленный-пользователь@удаленный-хост:полный-путь-до-файла

Вариант 2, с использованием утилиты sshfs:
http://www.linuxjournal.com/article/8904

понедельник, 7 июля 2014 г.

Windows: настраиваем резервное копирование с помощью rsync

Дано:
1) Компьютер WinSRV под управлением Windows 2008 с установленной на нём СУБД SQL Server 2012 Express и развёрнутой базой MyDatabase. Будем считать, что аккаунт с административными правами называется winuser.
2) Компьютер DebSRV под управлением Debian 6.0, доступный по ssh (порт 12345) с логином debuser, и содержащий папку, предназначенную для резервных копий: /media/backup/.

Задача:
Настроить ежедневное резервное копирование баз с первого компьютера на второй.

Решение:

Выбираем инструментарий. Предлагаем на стороне WinSRV использовать:
1) Архиватор 7-zip, установленный в папке c:\Program Files\7-Zip
2) rsync из пакета cygwin. Этот пакет установлен в папке c:\cygwin64 и помимо rsync содержит, в частности утилиты ssh.exe и ssh-keygen.exe, которые нам понадобятся.

На компьютере WinSRV создаём рабочую папку для задачи архивирования, c:\backup.
В этой папке создаём два вспомогательных файла.
Файл backup.sql:
-- создаём резервную копию базы MyDatabase
BACKUP DATABASE MyDatabase TO DISK='c:\backup\MyDatabase.bak'

-- создаём резервные копии системных баз
BACKUP DATABASE master TO DISK='c:\backup\master.bak'
BACKUP DATABASE model TO DISK='c:\backup\model.bak'
BACKUP DATABASE msdb TO DISK='c:\backup\msdb.bak'
Файл filelist.txt:
c:\backup\MyDatabase.bak
c:\backup\master.bak
c:\backup\model.bak
c:\backup\msdb.bak
Создаём командный файл backup.bat:
rem создаём бэкапы баз
"c:\Program Files\Microsoft SQL Server\110\Binn\SQLCMD.exe" -U (логин к базе) -P (пароль к базе) -S . -i c:\backup\backup.sql -o c:\backup\log.txt

rem архивируем бэкапы в один файл
"c:\Program Files\7-Zip\7z.exe" -a -r -p(пароль к архиву) c:\backup\MSSQL_%date:~10,4%%date:~7,2%%date:~4,2%.7z @c:\backup\filelist.txt -xr!*.log

rem передаём архив на сервер DebSRV при помощи rsync
c:\cygwin64\bin\rsync.exe -e "/bin/ssh.exe -p 12345" -t /cygdrive/c/backup/MSSQL_%date:~10,4%%date:~7,2%%date:~4,2%.7z debuser@DebSRV:/media/backup

rem удаляем лишние файлы
del c:\backup\MSSQL_%date:~10,4%%date:~7,2%%date:~4,2%.7z c:\backup\MyDatabase.bak c:\backup\master.bak c:\backup\model.bak c:\backup\msdb.bak

Настраиваем доступ на сервер DebSRV по ssh без пароля. Мы сделали это так:
1) На сервере WinSRV создали приватный и публичный ключ командой:
c:\cygwin64\bin\ssh-keygen.exe -t dsa -N ''
результатом работы этой утилиты являются два файла, c:\cygwin64\home\winuser\.ssh\id_dsa и c:\cygwin64\home\winuser\.ssh\id_dsa.pub
2) Закинули публичную часть ключа на сервер DebSRV (предполагается, что папка /home/debuser/.ssh/ на этом сервере уже есть):
c:\cygwin64\bin\rsync.exe -e "/bin/ssh.exe -p 12345" -t /home/winuser/.ssh/id_dsa.pub debuser@DebSRV:~
дальше заходим на сервер DebSRV по ssh
ssh debuser@DebSRV -p 12345
и добавляем содержимое файла id_dsa.pub в файл ~/.ssh/authorized_keys2:
cat id_dsa.pub >> ~/.ssh/authorized_keys2
rm id_dsa.pub

После этого на компьютере WinSRV в планировщике задач ставим на выполнение файл c:\backup\backup.bat от имени winuser с нужным расписанием, и всё.

вторник, 27 мая 2014 г.

Linux: RDP через SSH

Дано:
1) Сервер my-rdp-server во внешнем инете, доступный по RDP;
2) Домашний компьютер my-ssh-server, доступный по ssh;
3) Корпоративный http-прокси с ntlm-авторизацией;
4) Рабочая станция с линуксом и программой rdesktop.
Проблема следующая: как попасть на сервер my-rdp-server с рабочего компьютера?

Решение:
1) поднимаем cntlm
2) пускаем ssh через этот самый cntlm (как это сделать, см., например, тут)
3) поднимаем ssh-туннель командой:
ssh -N -f -L 3389:my-rdp-server:3389 my-login@my-ssh-server
4) цепляемся к туннелю командой:
rdesktop -g 1024x720 localhost:3389

Литература:
man ssh
http://rus-linux.net/MyLDP/sec/SSH-Tunneling.html

воскресенье, 25 мая 2014 г.

Linux: организуем proxy при помощи SSH

Дано:
1) Корпоративный http-прокси с ntlm-авторизацией;
2) Рабочая станция с линуксом;
3) Домашний компьютер my-ssh-server, доступный по ssh.
Проблема следующая: как гулять по интернету с рабочего компьютера так, чтобы не сильно светиться на корпоративном прокси?

Решение:
1) поднимаем cntlm
2) пускаем ssh через этот самый cntlm (как это сделать, см., например, тут)
3) поднимаем socks-прокси командой:
ssh -N -f -D localhost:12345 my-login@my-ssh-server
4) прописываем localhost:12345 в качестве socks4-сервера в своём браузере.

В результате с точки зрения корпоративного прокси наши гуляния по интернету превращаются в зашифрованный трафик с рабочей станции до домашнего компа.

понедельник, 5 декабря 2011 г.

SSH через прокси

Возник вопрос - как сделать, чтобы работала команда ssh mylogin@my-ssh-server, если сидишь за прокси? Выяснилось, что для этого надо:

1. Прикручиваем на локальной машине утилиту corkscrew

2. В файле ~/.ssh/config пишем следующее:
host my-ssh-server
ProxyCommand /usr/local/bin/corkscrew my-proxy-server my-proxy-port %h %p


3. После этого команда ssh mylogin@my-ssh-server -p 12345 пойдет через прокси.

(вот ещё полезная информация)

UPD 2012-11-02:
Есть ещё одна небольшая тонкость. Некоторые прокси-серверы сбрасывают неактивные подключения по истечении определенного периода времени. Если же в команде подключения указать опцию -o ServerAliveInterval=60 (или прописать это же, только с пробелом вместо знака равенства, в соответствующий раздел host файла ~/.ssh/config), то сессия обрываться не будет.