У меня есть 2 компьютера, один из которых я использую, а другой - для детей. Я хочу иметь возможность подключиться к их компьютеру через ssh (например, выключить его и т. Д.), Но мне любопытно, как это сделать лучше всего. Мы оба находимся в одном доме и используем одно и то же интернет-соединение.
Каков наилучший способ сделать это? Из исследований я прочитал, чтобы установить openssh-сервер на удаленный компьютер, но мне не понятно, что использовать для имени хоста при попытке подключения. Обычно для VPS это внешний IP, но так как мы оба используем Wi-Fi соединение, это будет аппаратный IP? Должны ли мы взаимодействовать напрямую по локальной сети или через Интернет?
Выполнить:
avahi-browse -tl _workstation._tcp
Чтобы получить список рабочих станций Ubuntu в локальной сети, вы можете подключиться к ним, выполнив:
ssh <username>@<computer-name>.local
Вы можете напрямую подключиться по ssh к локальному IP-адресу при условии, что в вашей локальной сети используются статические IP-адреса, например
ssh someuser@192.168.1.2
. отредактируйте файл hosts на обоих компьютерах, как упомянуто Эдом Мане в его ответе . Таким образом, вы можете использовать ssh, используя имя хоста компьютера, то есть ssh someuser@some_hostname
Вы можете настроить локальный DNS-сервер для разрешения хостов вашей локальной сети. Таким образом, вы сможете ssh использовать имя хоста компьютера, как в варианте 2, но с дополнительным преимуществом избегать редактирования каждого файла хостов, указав свой DNS-сервер в сетевых настройках Ubuntu.
DNSMasq - довольно хороший DNS-сервер, простой в настройке.
Другой вариант - BIND .
Вы можете использовать IP-адрес для подключения ssh к компьютеру ребенка. Если вы хотите использовать имя компьютера, отредактируйте файл / etc / hosts, включив в него имя компьютера.
192.168.1.104 dad
192.168.1.105 kids
Я использую файл ~ / .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
Обратите внимание, что вы можете использовать любую (клиентскую) переменную в этом файле и установить ее глобально. или на сервер.
Перед выполнением 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-адрес дважды.
Используйте IP-адрес локальной сети. Альтернативный подход требует, чтобы какой-то порт был открыт для доступа в Интернет, чтобы вы могли войти.
Кроме того, вам потребуется сопоставление портов (на маршрутизаторе). Использование вашего «публичного» IP-адреса (на маршрутизаторе) в качестве цели не будет подключаться ни к одному из двух ваших ПК.
Самый простой способ - это постоянное назначение каждого IP-адреса (для двух компьютеров) на маршрутизаторе. Затем просто подключитесь к этому IP-адресу.
Если вы хотите стать умнее (позже), настройте сервер и начните использовать локальную службу DNS для назначения значимых имен каждому устройству. На самом деле не стоит проблем только для 2 компьютеров.
Если вы используете одно и то же подключение к Интернету, вы, скорее всего, находитесь за тем же маршрутизатором Wi-Fi. Таким образом, вы подключаетесь напрямую к вашему детскому компьютеру:
ssh <IP-address>
или:
ssh <user-name>@<IP-address>
Очевидно, это работает лучше, если у детского компьютера есть статический IP-адрес. В противном случае вам всегда нужно проверять IP-адрес. Большинство маршрутизаторов имеют возможность назначать статические (всегда одинаковые) IP выбранным устройствам. Некоторые маршрутизаторы также имеют возможность назначать имя хоста определенному устройству - тогда для любого устройства с одним и тем же сетевым адресом «дети» будут означать одно и то же. Если вы назначаете имена хостов с помощью файла / etc / hosts, имя хоста известно только тому компьютеру, на котором находится этот файл хоста. Кроме того, предполагается, что детский компьютер имеет статический IP-адрес.
Вы также можете установить статический IP для детского компьютера на этой машине, но я советую настроить, где сетевые настройки выполняются в маршрутизаторе. Одна точка контроля - проще в управлении. Если что-то неясно, оставьте комментарий, и я расширю свой ответ.
Вы можете использовать IP-адрес вместо имени хоста или назначить произвольное имя хоста в вашем файле /etc/hosts
.
Чтобы получить IP на компьютере ребенка: в меню сети см. «Информация о соединении» или , запустите ifconfig
в командной строке (это должно быть сделано на компьютере ребенка).
Ваш маршрутизатор Wi-Fi назначает эти IP-адреса, и вы должны иметь возможность настроить его так, чтобы он сохранял конкретные IP-адреса для компьютеров, которым они назначены в настоящее время. (В противном случае IP-адреса могут время от времени меняться).
Вы можете просто назначить имя компьютера для машины вашего ребенка.
Тогда просто сделайте,
ssh MachineName
Я никогда не использовал это, только мысль в моей голове, которую я разделял.