Введение
Часто может быть трудно управлять несколькими машинами на ежедневной основе. Хотя Secure Shell (SSH) — хороший выбор для удаленного доступа, сам протокол имеет некоторые недостатки как в удобстве, так и в безопасности.
Например, удаленные машины должны иметь публичный IP-адрес и перенаправленный порт для доступа к ним, что обнажает их в Интернет или, по крайней мере, большую сеть. Это особенно касается, если вы используете пароль для аутентификации вместо общественности и частной ключевой пары. Кроме того, если вы не знаете открытый ключ удаленного компьютера заранее, вы можете быть уязвимы для атаки « Man-In-Mids ». И многие удаленные машины, которые вы хотите получить доступ, либо нет публичного IP-адреса, либо у них есть динамический IP-адрес, который вы можете не знать.
Кроме того, SSH требует одного соединения на удаленный сеанс. Если пользователь должен запускать одну команду по сотен или даже тысячам машин, они должны сначала установить соединение с каждой машиной с рукопожатием TCP, что менее эффективно.
NKN Shell или NSH, является альтернативой SSH, который обеспечивает удобный и безопасный способ запуска удаленных команд. NSH использует Глобальная общественная сеть NKN который обеспечивает безопасную и децентрализованную передачу данных. Архитектура использует уникальные адреса, которые содержат открытый ключ, используемый как для маршрутизации, так и для сквозного шифрования без какой-либо инфраструктуры открытого ключа (PKI). Сеть также не требует удаленного сервера, чтобы иметь публичный IP-адрес. Удаленный сервер должен иметь только доступ в Интернет и иметь возможность установить исходящие подключения HTTP и Websocket. В результате ваши удаленные машины не подвергаются открытому интернету.
В этом руководстве вы будете использовать NKN Shell Daemon и NKN Shell Client Xterm Приложения для выполнения команд на удаленном компьютере. Для этого вы будете устанавливать и настроить демон NKN Shell на удаленном компьютере с доступом в Интернет, генерируйте ключную пару и сделайте соединение от клиента.
Предварительные условия
Чтобы следовать этому руководству, вам понадобится следующее:
- Один сервер Ubuntu 18.04, созданный следующим Убенту 18.04 Первоначальное направление настройки сервера , включая нерунью
Sudo
Удостоверение пользователя и брандмауэр. - Веб-браузер установлен на вашем локальном компьютере.
Шаг 1 — Установка демона NKN Shell на удаленном сервере
Сначала установите DKN Shell Daemon ( NSD
) на вашем сервере. Это приложение вызывает nkn-multiClient , который подключится к публичной сети NKN и получить адрес для маршрутизации. Демон затем прослушивает команды входящих команд из аутентифицированных и белейных клиентов, выполняют эти команды, а затем отправлять результаты назад.
Начните с загрузки последних Предварительно построенный NSHD Binary из GitHub :
wget https://github.com/nknorg/nkn-shell-daemon/releases/latest/download/linux-amd64.tar.gz
Декомпресс файл:
tar -zxvf linux-amd64.tar.gz
Затем переместите файлы в /usr/local/bin
каталог, чтобы они были доступны шириной системы:
sudo mv ./linux-amd64/* /usr/local/bin/
Затем вы настроите это, чтобы запустить процесс демона, используя SystemD, чтобы он перезапущен, если сервер сброшен.
Создайте файл под названием NSHD.Service
в /etc/systemd/system
:
sudo nano /etc/systemd/system/nshd.service
Добавьте следующее определение сервиса в файл, чтобы настроить службу:
[Unit] Description=NKN Shell Daemon After=network.target [Service] Type=simple User=root Group=root Restart=always ExecStart=/usr/local/bin/nshd [Install] WantedBy=multi-user.target
Узнайте больше о файлах системного блока в Понимание системных единиц и блочных файлов Отказ
Сохраните файл и выйдите из редактора. Затем включите и запустите NSHD
Сервис со следующими командами:
sudo systemctl enable nshd.service sudo systemctl start nshd.service
Запустите следующую команду, чтобы убедиться, что служба активна и запущена:
sudo systemctl status nshd.service
Вы увидите, что статус активен:
● nshd.service - NKN Shell Daemon Loaded: loaded (/etc/systemd/system/nshd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-02-19 19:16:02 UTC; 7s ago Main PID: 3457 (nshd) Tasks: 10 (limit: 1152) CGroup: /system.slice/nshd.service └─3457 /usr/local/bin/nshd Feb 19 19:16:02 your_hostname systemd[1]: Started NKN Shell Daemon. Feb 19 19:16:03 your_hostname nshd[3457]: Create directory /etc/nshd/ Feb 19 19:16:03 your_hostname nshd[3457]: Create password and save to file /etc/nshd/wallet.pswd Feb 19 19:16:03 your_hostname nshd[3457]: Create wallet and save to file /etc/nshd/wallet.json Feb 19 19:16:03 your_hostname nshd[3457]: Create authorized pubkeys file /etc/nshd/authorized_pubkeys Feb 19 19:16:03 your_hostname nshd[3457]: Listening at d46567b883a3070ee3fe879d9fa2d5dc55a95f79ff2797c42df36c6979e5c4Aba
Чтобы подключиться к вашему серверу, вам необходимо получить свой адрес NKN, который вы можете найти в выходе предыдущей команды. Вы также можете запустить следующую команду, чтобы получить адрес:
nshd addr
Вы увидите ваш адрес:
e70ca28ede84fc0659f2869255e8a393aef35b4fa5a7e036f29127c7dba75383
Обратите внимание на этот адрес, поскольку вам нужно будет подключиться к вашему серверу.
Теперь, когда демон работает и прослушивает, вы можете настроить веб-клиент, чтобы поговорить с сервером.
Шаг 2 — Настройка разрешений для клиента NKN Shell
Вам понадобится совместимый клиент, который может подключиться к удаленному компьютеру. В этом руководстве вы будете использовать NKN Client Client Xterm, веб-клиент NKN NKN. Есть несколько разных способов запуска:
- Используйте размещенную версию в https://nsh.nkn.org/ Отказ Обратите внимание, что в то время как эта веб-страница размещена на сервере, это на самом деле чистое локальное веб-приложение, которое работает в вашем браузере.
- Получить Исходный код И принимая это сами.
- Используйте Nshell Chrome Extension Отказ
В этом руководстве вы будете использовать размещенную версию. На вашей местной машине откройте свой веб-браузер и перейдите к https://nsh.nkn.org Отказ Вы увидите приветственный экран:
Нажмите Создать новую ключевую пару Отказ Ваши ключи будут сгенерированы и отображаться, как показано на следующем изображении:
Примечание : Когда вы генерируете новую ключевую пару, вы увидите Секретное семя Отказ Держите это секретное семя безопасным и безопасным, так же, как будто вы бы с вашим SSH закрытым ключом. Любой, кто имеет это секретное семя, может использовать его для восстановления вашего открытого ключа, а затем запускать команды на ваших удаленных машинах. Ваш браузер запомнит этому семену, но вы должны скопировать его где-то в безопасности, чтобы вы могли использовать его снова на новой машине.
Сохранить Секретное семя Где-то безопасно. Вы можете использовать его позже, чтобы восстановить ваш открытый ключ, чтобы вы могли подключиться к другому клиентскому компьютеру.
Так как это новая ключевая пара, вы должны добавить Открытый ключ к файлу /etc/nshd/Авторизованные_Pubkeys
на вашем сервере.
/etc/nshd/aperized_pubkeys
Имеет подобную роль как ~/autorized_keys
Файл, который контролирует, какие общедоступные ключи SSH могут войти в систему. Авторизованные_Pubkeys
Файл может указать, какой пользователь связан с ключом. В целях безопасности вы захотите войти в систему, используя пользователя Non-root в этом руководстве, поэтому вы связываете сгенерированный открытый ключ с вашим Сэмми Пользователь, который вы создали в начальном руководстве по установке сервера в предпосылке этой статьи.
Чтобы связать пользователя с открытым ключом, вам необходимо получить идентификатор пользователя (UID) и идентификатор группы (GID) этого пользователя. Выполните следующую команду на своем сервере во время регистрации в качестве Сэмми Пользователь:
id
Вы увидите UID и GID пользователя:
uid=1000(sammy) gid=1000(sammy) groups=1000(sammy),27(sudo)
Теперь откройте Авторизованные_Pubkeys
Файл в вашем редакторе:
sudo nano /etc/nshd/authorized_pubkeys
Добавьте одну строку, содержащую открытый ключ, UID и GID, разделенные пробелами:
5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000
Сохраните файл.
Убедитесь, что файл содержит правильный контент:
cat /etc/nshd/authorized_pubkeys
Вы увидите ваш ключ, напечатанный на экране:
5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000
Затем перезапустите NSHD
Демон, чтобы применить изменения:
sudo systemctl restart nshd.service
Теперь давайте проверим его, подключив к серверу и запустите команду.
Шаг 3 — Отправка команды на удаленный компьютер и получите ответ
В NKN Shell Client введите свой удаленный NSHD
Адрес из шага 1, а также дополнительный идентификатор клиента:
Нажмите Соединить инициировать соединение.
Вы будете подключены к дистанционному компьютеру и показали, что клеммное приглашение в браузере. Отсюда вы можете использовать его так же, как SSH. Например, выполните следующую команду для переключения на /etc/nshd
каталог:
cd /etc/nshd
Затем перечислите его содержимое:
ls
Вы увидите содержимое каталога:
authorized_pubkeys wallet.json wallet.pswd
Вы можете отключить, набрав выход
. Когда вам нужно подключить, пересмотреть веб-интерфейс и введите данные о подключении. Если вы генерируете новую ключевую пару, вам нужно добавить новый открытый ключ на свой сервер.
Вывод
В этом руководстве вы установили и настроили NSH на безопасную и удобно отправлять команды на удаленный компьютер. NSH — отличный способ получить доступ к удаленным компьютерам, когда вам необходимо быстро запустить команду, чтобы получить последний статус службы или PEEK в некоторых настройках конфигурации. Приложение основано на глобальной общедоступной сети NKN, и это бесплатно пользоваться, поэтому вы можете включить его в свое собственное приложение или рабочий процесс сегодня.
Вы также можете исследовать НКН-туннель который поддерживает оригинальные SSH или любые другие приложения на основе TCP.
Пост был изначально размещен на блоге Digitalocean: Как использовать NSH для запуска безопасных удаленных команд на Ubuntu 18.04
Оригинал: «https://dev.to/nknorg/use-nsh-to-run-secure-remote-commands-13j8»