Одна из самых привлекательных особенностей Linux – это способность умело использовать компьютер, используя только команды, вводимые с клавиатуры, и, что еще лучше, возможность делать это на компьютерах в любой точке мира. Благодаря OpenSSH пользователи POSIX могут открыть защищенную оболочку на любом компьютере, на котором у них есть разрешение на доступ, и использовать ее из удаленного места. Это повседневная задача для многих пользователей Linux, но она может сбивать с толку тех, кто еще не пробовал ее. В этой статье объясняется, как настроить два компьютера для соединений с защищенной оболочкой (SSH) и как безопасно подключаться друг к другу без пароля.
При обсуждении нескольких компьютеров бывает сложно отличить один от другого. У ИТ-сообщества есть устоявшиеся термины, помогающие прояснить описания процесса объединения компьютеров в сеть.
localhost
Теперь, когда терминология определена, можно начинать.
Чтобы два компьютера были подключены через SSH, на каждом хосте должен быть установлен SSH. SSH состоит из двух компонентов: команды, которую вы используете на локальном компьютере для запуска соединения, и сервера для приема входящих запросов на соединение. На некоторых компьютерах уже установлена одна или обе части SSH. Команды различаются в зависимости от вашей системы, чтобы проверить, установлены ли у вас и команда, и сервер, поэтому самый простой способ – найти соответствующие файлы конфигурации:
$ file /etc/ssh/ssh_config /etc/ssh/ssh_config: ASCII text
Если это вернет No such file or directoryошибку, значит, у вас не установлена команда SSH.
No such file or directory
Сделайте аналогичную проверку для службы SSH (обратите внимание dна имя файла):
d
$ file /etc/ssh/sshd_config /etc/ssh/sshd_config: ASCII text
При необходимости установите то или другое:
$ sudo dnf install openssh-clients openssh-server
На удаленном компьютере включите службу SSH с помощью systemd:
$ sudo systemctl enable --now sshd
Кроме того, вы можете включить службу SSH в системных настройках в GNOME или в системных настройках в macOS. На рабочем столе GNOME он находится на панели общего доступа :
Теперь, когда вы установили и включили SSH на удаленном компьютере, вы можете попробовать войти в систему с паролем в качестве теста. Для доступа к удаленному компьютеру у вас должна быть учетная запись пользователя и пароль.
Ваш удаленный пользователь не обязательно должен совпадать с вашим локальным пользователем. Вы можете войти в систему как любой пользователь на удаленном компьютере, если у вас есть пароль этого пользователя. Например, я admins24на своем рабочем компьютере, но я rsaна своем персональном компьютере. Если я использую свой персональный компьютер (что делает его моим текущим локальным компьютером) и хочу подключиться к моему рабочему компьютеру по SSH, я могу сделать это, указав себя как admins24и используя свой рабочий пароль.
admins24
rsa
Чтобы подключиться к удаленному компьютеру по SSH, вы должны знать его IP-адрес или разрешаемое имя хоста. Чтобы узнать IP-адрес удаленной машины, используйте ipкоманду (на удаленном компьютере):
ip
$ ip addr show | grep "inet " inet 127.0.0.1/8 scope host lo inet 10.1.1.5/27 brd 10.1.1.31 [...]
Если на удаленном компьютере нет ipкоманды, попробуйте ifconfigвместо нее (или даже ipconfigв Windows).
ifconfig
ipconfig
Адрес 127.0.0.1 является специальным и фактически является адресом localhost. Это «петлевой» адрес, который ваша система использует для достижения самой себя. Это бесполезно при входе на удаленный компьютер, поэтому в этом примере правильный IP-адрес удаленного компьютера – 10.1.1.5. В реальной жизни я бы знал это, потому что моя локальная сеть использует подсеть 10.1.1.0. Если удаленный компьютер находится в другой сети, то IP-адрес может быть практически любым (хотя и не 127.0.0.1), и, вероятно, потребуется специальная маршрутизация для доступа к нему через различные брандмауэры.
Если вы можете проверить связь с удаленным компьютером по его IP-адресу или имени хоста и иметь на нем учетную запись для входа, тогда вы можете использовать SSH:
$ ping -c1 10.1.1.5 PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data. 64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms $ ping -c1 akiton.local PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
Это успех. Теперь используйте SSH для входа в систему:
$ whoami rsa $ ssh admins24@10.1.1.5 bash$ whoami admins24
Тестовый вход работает, так что теперь вы готовы активировать вход без пароля.
Для безопасного входа на другой компьютер без пароля у вас должен быть ключ SSH. Возможно, у вас уже есть SSH-ключ, но создать новый не помешает. Ключ SSH начинает свою жизнь на вашем локальном компьютере. Он состоит из двух компонентов: закрытого ключа, которым вы никогда не делитесь ни с кем и ничем, и открытого ключа, который вы копируете на любой удаленный компьютер, к которому хотите получить доступ без пароля.
Некоторые люди создают один ключ SSH и используют его для всего, от удаленного входа до аутентификации GitLab. Однако я использую разные ключи для разных групп задач. Например, я использую один ключ дома для аутентификации на локальных машинах, другой ключ для аутентификации на обслуживаемых мною веб-серверах, отдельный для хостов Git, другой для репозиториев Git, которые я размещаю, и так далее. В этом примере я создам уникальный ключ для использования на компьютерах в моей локальной сети.
Чтобы создать новый ключ SSH, используйте ssh-keygenкоманду:
ssh-keygen
$ ssh-keygen -t ed25519 -f ~/.ssh/lan
Параметр -tобозначает тип и гарантирует, что шифрование, используемое для ключа, выше, чем значение по умолчанию. Параметр -fобозначает файл и устанавливает имя файла ключа и его расположение. Вам будет предложено создать пароль для вашего SSH-ключа. Вы должны создать пароль для ключа. Это означает, что вам нужно будет ввести пароль при использовании ключа, но этот пароль остается локальным и не передается по сети. После выполнения этой команды у вас останется закрытый ключ lanSSH и открытый ключ SSH lan.pub.
-t
-f
lan
lan.pub
Чтобы передать открытый ключ на удаленный компьютер, используйте расширение ssh-copy-id. Чтобы это работало, вы должны убедиться, что у вас есть SSH-доступ к удаленному компьютеру. Если вы не можете войти на удаленный хост с паролем, вы также не можете настроить вход без пароля:
ssh-copy-id
$ ssh-copy-id -i ~/.ssh/lan.pub admins24@10.1.1.5
Во время этого процесса вам будет предложено ввести пароль для входа на удаленный хост.
В случае успеха попробуйте снова войти в систему, но на этот раз с помощью -iопции, указывающей команде SSH на соответствующий ключ ( lanв этом примере):
-i
$ ssh -i ~/.ssh/lan admins24@10.1.1.5 bash$ whoami admins24
Повторите этот процесс для всех компьютеров в вашей сети, и вы сможете перемещаться по каждому хосту, никогда больше не думая о паролях. Фактически, если у вас настроена аутентификация без пароля, вы можете отредактировать /etc/ssh/sshd_configфайл, чтобы запретить аутентификацию по паролю. Это не позволяет никому использовать SSH для аутентификации на компьютере, если у них нет вашего закрытого ключа. Для этого откройте /etc/ssh/sshd_configв текстовом редакторе с sudoразрешениями и найдите строку PasswordAuthentication. Измените строку по умолчанию на это:
/etc/ssh/sshd_config
sudo
PasswordAuthentication
PasswordAuthentication no
Сохраните его и перезапустите SSH-сервер (или просто перезагрузитесь):
$ sudo systemctl restart sshd && echo "OK" OK $
OpenSSH меняет ваш взгляд на вычисления. Вы больше не привязаны к компьютеру, который находится перед вами. С SSH у вас есть доступ к любому компьютеру в вашем доме или серверам, на которых у вас есть учетные записи, и даже к мобильным устройствам и устройствам Интернета вещей. Разблокировка мощности SSH также открывает возможности терминала Linux. Если вы не используете SSH каждый день, начните прямо сейчас. Разберитесь с ним, соберите ключи, живите более безопасно и расширяйте свой мир.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies