Установите SSH сервер командой:
sudo apt install openssh-server
Проверьте, что служба ssh.service работает:
systemctl is-active ssh
Пробуйте подключиться к серверу с удаленного компьютера по SSH командой:
ssh user@192.168.0.1
где user - имя учетной записи на сервере с возможностью sudo, 192.168.0.1 — адрес сервера. Вместо адреса можно использовать доменное имя. Сервер запросит пароль, введите.
При первом подключении вы получите предупреждение о невозможности установления подлинности хоста, к которому подключаетесь. Введите в терминале ответ "yes". Ключ хоста добавится в файл /home/user/.ssh/known_hosts на удаленном компьютере, и предупреждений больше не будет.
Настройки ssh сервера находятся в файле /etc/ssh/sshd_config. Создайте резервную копию с настройками по умолчанию командой:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
Откройте файл для редактирования командой:
sudo nano /etc/ssh/sshd_config
Запись Port 22 - порт, который прослушивает SSH сервер, желательно сменить его на свой.
- Запись PermitRootLogin prohibit-password можно поменять на PermitRootLogin no, запретив вход от имени суперпользователя.
- Запись PermitEmptyPasswords no запрещает авторизацию с пустым паролем.
- Запись PasswordAuthentication no запретит авторизацию по паролю. Но предварительно необходимо настроить авторизацию по ключу! Иначе вы потеряете доступ к серверу.
Закройте соединение командой:
exit
Авторизация по SSH2 RSA-ключу
При таком способе авторизации на клиентском компьютере генерируется пара ключей:
- Публичный - копируется на сервер;
- Приватный - остается на клиентском компьютере.
Сгенерируйте ключи на клиенте, выполнив команду:
ssh-keygen
Ответьте на вопросы мастера, запомните кодовую фразу, либо оставьте её пустой. Для примера сгенерируем ключи с названием rsa_key и rsa_key.pub.
Скопируйте на сервер сгенерированный публичный ключ:
ssh-copy-id -p 22 -i ~/.ssh/rsa_key.pub user@192.168.0.1
где параметр -p 22 - это порт, который вы установили в файле sshd_config. Если порт не менялся, то данный параметр можно упускать, но в дальнейших примерах он все равно будет указываться для наглядности.
Ответ от сервера будет приблизительно таким:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/rsa_key.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@192.168.0.1's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' 'user@192.168.0.1'"
and check to make sure that only the key(s) you wanted were added.
Вновь подключитесь к серверу по паролю, выполнив команду:
ssh user@192.168.0.1
Откройте файл настроек для редактирования командой:
sudo nano /etc/ssh/sshd_config
Приведите записи к следующему виду:
PasswordAuthentication no
PubkeyAuthentication yes
запретив тем самым авторизацию по паролю и разрешив по rsa-ключу.
Перезагрузите сервис SSH командой:
sudo systemctl restart ssh
Отключитесь командой:
exit
Теперь пробуйте подключиться по паролю:
ssh -p 22 user@192.168.0.1
Получаем ответ:
user@192.168.0.1: Permission denied (publickey).
Пробуйте подключиться по ключу:
ssh -p 22 -i ~/.ssh/rsa_key user@192.168.0.1
Если ключ был сгенерирован с использованием секретной фразы, её придется ввести.
Добавляем некоторые удобства
В домашней папке клиентского компьютера создайте файл ~/.ssh/config со следующим содержимым:
Host server
User user
HostName 192.168.0.1
Port 22
IdentityFile ~/.ssh/rsa_key
Теперь подключаться к серверу можно командой:
ssh server
Дополнительно
Для управления SSH существуют команды
sudo systemctl start|stop|restart ssh
Разрешить или запретить запуск ssh-службы при загрузке системы:
sudo systemctl enable|disable ssh
#ssh #ubuntuserver #raspberry