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

61

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

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

dukevin
источник

Ответы:

58

Бегать:

avahi-browse -tl _workstation._tcp

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

ssh <username>@<computer-name>.local
Эрик Карвалью
источник
7
Примечание: для avahi-browse, вам нужно будет установить avahi-utilsпакет (который также включит avahi-daemonсервис, обеспечивающий адресуемость .local).
Писквор
2
@ Писквор Хороший вопрос. Этот пакет уже установлен по умолчанию в Ubuntu Desktop, но я не знаю других версий (kubuntu, lubuntu и т. Д.). Если он не установлен, просто запустите sudo apt-get install avahi-utils.
Эрик Карвалью
так нужно ли будет устанавливать ssh-сервер или, например, ubuntu 14.04 по умолчанию запускает его?
Тоби
1
@tobi SSH сервер не установлен по умолчанию. Вы должны установить его.
Эрик Карвалью
2
список кажется пустым после того, как я бегу avahi. Оба компьютера подключены к одному и тому же маршрутизатору
Хосе Оспина
15

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

192.168.1.104  dad
192.168.1.105  kids
Эд Мане
источник
12
Вы должны указать, что IP-адреса должны быть статически назначены компьютерам.
Алаа Али
3
Вы можете включить использование sshпо имени, не редактируя файл hosts, назвав хосты в ~/.ssh/config: howtogeek.com/75007/…
Натан Лонг,
@NathanLong - Хороший совет! хотя можно утверждать, что наличие его в файле hosts позволяет получить доступ к любому сервису (если это необходимо).
stefgosselin
9

Перед тем, как делать 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.

PAC
источник
8

Я использую файл ~ / .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

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

Shadok
источник
Тогда как же можно настроить DNS - средство домашнего интернет - шлюза устройства , чтобы связать server1-web.example.orgи server2-db.example.orgс соответствующими серверами?
Дамиан Йеррик
5
  1. Вы можете напрямую подключиться к локальному IP-адресу, если ваша локальная сеть использует статические IP-адреса, например.
    ssh someuser@192.168.1.2

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

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

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

Стеф К
источник
3

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

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


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

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

david6
источник
1
Примечание. В настоящее время многие приличные домашние маршрутизаторы будут считывать имена хостов рабочих станций во время назначения IP-адресов и разрешать их для локальных DNS. Увы, пока это не универсальная особенность.
Писквор
2

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

ssh <IP-address>

или же:

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

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

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

Танель Мэй
источник
Я попробовал Ваше предложение, но получил ошибку: ssh: connect to host xxx.xxx.x.xx port 22: connection refused- Есть ли необходимость в дополнительной конфигурации?
lukaszkups
На этой машине должен быть запущен ssh-сервер, а брандмауэр не должен блокировать его и так далее. Может случиться так, что ssh был настроен на ожидание соединений на каком-то другом порту, и в этом случае можно использовать флаг -p пользователя для использования чего-то другого, чем порт по умолчанию (22).
Tanel Mae
0

Вы можете использовать IP-адрес вместо имени хоста или назначить свое имя хоста в вашем /etc/hostsфайле.

Чтобы получить IP-адрес на компьютере ребенка: в сетевом меню см. «Информация о подключении» или запустите его ifconfigиз командной строки (это необходимо сделать на компьютере ребенка).

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

AmanicA
источник
0

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

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

Гаурав Ганди
источник