Какой лучший способ SSH для машин в локальной сети?

У меня есть 2 компьютера, один из которых я использую, а другой - для детей. Я хочу иметь возможность подключиться к их компьютеру через ssh (например, выключить его и т. Д.), Но мне любопытно, как это сделать лучше всего. Мы оба находимся в одном доме и используем одно и то же интернет-соединение.

Каков наилучший способ сделать это? Из исследований я прочитал, чтобы установить openssh-сервер на удаленный компьютер, но мне не понятно, что использовать для имени хоста при попытке подключения. Обычно для VPS это внешний IP, но так как мы оба используем Wi-Fi соединение, это будет аппаратный IP? Должны ли мы взаимодействовать напрямую по локальной сети или через Интернет?

61
задан 22.03.2020, 03:04

8 ответов

Выполнить:

avahi-browse -tl _workstation._tcp

Чтобы получить список рабочих станций Ubuntu в локальной сети, вы можете подключиться к ним, выполнив:

ssh <username>@<computer-name>.local
58
ответ дан 22.03.2020, 03:09
  • 1
    Примечание: для avahi-browse, you' ll должен установить avahi-utils пакет (который также вытянет в avahi-daemon, сервис, обеспечивающий .local адресуемость). – McLan 22.03.2020, 03:09
  • 2
    Положительная сторона @Piskvor. Этот пакет уже установлен по умолчанию в Рабочем столе Ubuntu, но мне don' t знают о других разновидностях (kubuntu, lubuntu, и т.д.). Если это isn' t установил просто выполненный sudo apt-get install avahi-utils. – Romário 22.03.2020, 03:09
  • 3
    @tobi SSH сервер не установлен по умолчанию. Необходимо установить его. – Groot 22.03.2020, 03:10
  • 4
    таким образом, это было бы необходимо установить ssh сервер или делает, например, человечность 14.04 выполняет ту по умолчанию? – Adam Sharp 22.03.2020, 03:10
  • 5
    список кажется пустым после того, как я буду работать avahi. Оба компьютера подключены к тому же маршрутизатору – juanjo 22.03.2020, 03:11

Вы можете использовать IP-адрес для подключения ssh к компьютеру ребенка. Если вы хотите использовать имя компьютера, отредактируйте файл / etc / hosts, включив в него имя компьютера.

192.168.1.104  dad
192.168.1.105  kids
15
ответ дан 22.03.2020, 03:04
  • 1
    @NathanLong - Хорошая подсказка! хотя можно было обсудить наличие, оно в файле hosts позволяет одному доступу любой сервис (если это желаемо). – Hejazi 22.03.2020, 03:05
  • 2
    Необходимо указать, что дюйм/с должен быть статически присвоен компьютерам. – Aleks Beer 22.03.2020, 03:05
  • 3
    Можно включить ssh луг по имени, не редактируя файл hosts путем именования хостов в ~/.ssh/config: howtogeek.com/75007/… – RyanM 22.03.2020, 03:06

Если вы используете одно и то же подключение к Интернету, вы, скорее всего, находитесь за тем же маршрутизатором Wi-Fi. Таким образом, вы подключаетесь напрямую к вашему детскому компьютеру:

ssh <IP-address>

или:

ssh <user-name>@<IP-address>

Очевидно, это работает лучше, если у детского компьютера есть статический IP-адрес. В противном случае вам всегда нужно проверять IP-адрес. Большинство маршрутизаторов имеют возможность назначать статические (всегда одинаковые) IP выбранным устройствам. Некоторые маршрутизаторы также имеют возможность назначать имя хоста определенному устройству - тогда для любого устройства с одним и тем же сетевым адресом «дети» будут означать одно и то же. Если вы назначаете имена хостов с помощью файла / etc / hosts, имя хоста известно только тому компьютеру, на котором находится этот файл хоста. Кроме того, предполагается, что детский компьютер имеет статический IP-адрес.

Вы также можете установить статический IP для детского компьютера на этой машине, но я советую настроить, где сетевые настройки выполняются в маршрутизаторе. Одна точка контроля - проще в управлении. Если что-то неясно, оставьте комментарий, и я расширю свой ответ.

2
ответ дан 22.03.2020, 03:05
  • 1
    Должен быть ssh сервер, работающий на той машине и никаком брандмауэре, блокирующем его и т.д. Могло случиться так, что ssh был настроен для ожидания соединений на некотором другом порте, в этом случае, пользователю-p флаг возможно использовать что-то еще, чем порт по умолчанию (22). – Renato Ioshida 22.03.2020, 03:05
  • 2
    I' ve попробовал Ваше предложение, но получил ошибку: ssh: connect to host xxx.xxx.x.xx port 22: connection refused - там какая-либо дополнительная необходимая конфигурация? – Raniys 22.03.2020, 03:06

Используйте IP-адрес локальной сети. Альтернативный подход требует, чтобы какой-то порт был открыт для доступа в Интернет, чтобы вы могли войти.

Кроме того, вам потребуется сопоставление портов (на маршрутизаторе). Использование вашего «публичного» IP-адреса (на маршрутизаторе) в качестве цели не будет подключаться ни к одному из двух ваших ПК.


Самый простой способ - это постоянное назначение каждого IP-адреса (для двух компьютеров) на маршрутизаторе. Затем просто подключитесь к этому IP-адресу.

Если вы хотите стать умнее (позже), настройте сервер и начните использовать локальную службу DNS для назначения значимых имен каждому устройству. На самом деле не стоит проблем только для 2 компьютеров.

3
ответ дан 22.03.2020, 03:05
  • 1
    Примечание: много достойных домашних маршрутизаторов в наше время считают workstations' имена узлов во время присвоения IP-адреса, и разрешат его для локального DNS. Увы, это просто еще не универсальная функция. – Renato Ioshida 22.03.2020, 03:06

Я использую файл ~ / .ssh / config, который ssh ​​анализирует автоматически, вот пример:

Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

KeepAlive yes 
ServerAliveInterval 60
ServerAliveCountMax 10
ControlPersist 1h

Host server1
        User user1
        HostName server1-web.example.org

Host server2
        User user2
        HostName server2-db.example.org
        Compression yes
        IdentityFile /home/user/.ssh/different_key.pem

Обратите внимание, что вы можете использовать любую (клиентскую) переменную в этом файле и установить ее глобально. или на сервер.

8
ответ дан 22.03.2020, 03:06
  • 1
    Тогда, как каждый настраивает средство DNS домашнего устройства интернет-шлюза для соединения server1-web.example.org и server2-db.example.org с соответствующими серверами? – Ismail 22.03.2020, 03:07

Перед выполнением ssh проверьте наличие ssh-клиента и сервера. Если у вас нет этих сервисов, установите

 sudo apt-get install openssh-client

 sudo apt-get install openssh-server

Если вы уже только что сделали

 ssh username@ipaddress

 Enter connecting device login password.

Пример:

 ssh prem@192.168.1.145

 prem@192.168.1.145's password:********

Если вы получили какую-либо ошибку вроде : «В доступе отказано, пожалуйста, попробуйте еще раз.»

Пожалуйста, проверьте имя пользователя и IP-адрес дважды.

9
ответ дан 22.03.2020, 03:07
  1. Вы можете напрямую подключиться по ssh к локальному IP-адресу при условии, что в вашей локальной сети используются статические IP-адреса, например
    ssh someuser@192.168.1.2

  2. . отредактируйте файл hosts на обоих компьютерах, как упомянуто Эдом Мане в его ответе . Таким образом, вы можете использовать ssh, используя имя хоста компьютера, то есть ssh someuser@some_hostname

  3. Вы можете настроить локальный DNS-сервер для разрешения хостов вашей локальной сети. Таким образом, вы сможете ssh использовать имя хоста компьютера, как в варианте 2, но с дополнительным преимуществом избегать редактирования каждого файла хостов, указав свой DNS-сервер в сетевых настройках Ubuntu.

DNSMasq - довольно хороший DNS-сервер, простой в настройке.
Другой вариант - BIND .

5
ответ дан 22.03.2020, 03:08

Вы можете просто назначить имя компьютера для машины вашего ребенка.
Тогда просто сделайте,
ssh MachineName

Я никогда не использовал это, только мысль в моей голове, которую я разделял.

0
ответ дан 22.03.2020, 03:08

Теги

Похожие вопросы