Opening ssh on linux

Как пользоваться SSH

SSH — (Secure Shell) — это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh. В Linux для этого используется сервер ssh на машине, к которой нужно подключится и клиент, на той из которой подключаются.

В этой инструкции мы рассмотрим как пользоваться ssh, а также ее возможности, о которых вы даже не знали. Скорее всего, вы уже знаете как подключиться к серверу по ssh, но у этой утилиты есть еще много возможностей, таких как передача файлов ssh, подключение без пароля или выполнение скрипта на удаленном сервере. Все это мы и рассмотрим далее в статье. Но начнем с самых основ.

Базовый синтаксис

Синтаксис команды выглядит следующим образом:

$ ssh [опции] имя пользователя @ сервер [команда]

Важно заметить что ssh может работать по двум версиям протокола. Версии 1 и 2. Понятное дело, что версия 2 лучше и поддерживает больше типов шифрования и аутентификации. Больше в этой статье об отличиях протоколов мы говорить не будем и я буду подразумевать что вы используете версию 2.

Опции команды SSH

Теперь давайте рассмотрим самые основные опции команды ssh:

  • f — перевести ssh в фоновый режим;
  • g — разрешить удаленным машинам обращаться к локальным портам;
  • l — имя пользователя в системе;
  • n — перенаправить стандартный вывод в /dev/null;
  • p — порт ssh на удаленной машине;
  • q — не показывать сообщения об ошибках;
  • v — режим отладки;
  • x — отключить перенаправление X11;
  • X — включить перенаправление Х11;
  • C — включить сжатие.

Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл

/.ssh/config но здесь мы это тоже подробно рассматривать не будем.

Настройка сервера SSH

Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf

Порт ssh

По умолчанию ssh работает на порту 22. Но такое поведение небезопасно, поскольку злоумышленник знает этот порт и может попробовать выполнить Bruteforce атаку для перебора пароля. Порт задается строчкой:

Поменяйте значение порта на нужное.

Протокол SSH

По умолчанию сервер ssh может работать по двум версиям протокола, для совместимости. Чтобы использовать только протокол версии два раскомментируйте строчку:

И приведите ее к такому виду:

Рут доступ

По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:

Доступ только определенного пользователя к SSH

Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого добавьте строчки:

AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3

Здесь User1 и Group1 — пользователь и группа к которым нужно разрешить доступ.

Выполнение X11 приложений

Не все знают но есть возможность использовать ssh для запуска полноценных X11 приложений. Об этом мы поговорим ниже, но чтобы все заработало необходимо разрешить эту возможность на стороне сервера, добавьте такую строчку:

Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:

service sshd restart

Использование SSH

Основная цель этой статьи — показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному — возможности ssh.

Подключение к серверу

Чтобы просто подключиться к серверу по SSH используйте такую команду:

Выполнить команду

Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита ssh позволяет сразу выполнить нужную команду без открытия терминала удаленной машины. Например:

Читайте также:  Virtual piano для windows

ssh user@host ls

Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

Выполнить локальный скрипт

Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

ssh user@host ‘bash -s’

Бекап на удаленный сервер и восстановление

Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:

sudo dd if=/dev/sda | ssh user@host ‘dd of=sda.img’

Теперь чтобы восстановить состояние диска из сделанной копии выполните:

ssh user@host ‘dd if=sda.img’ | dd of=/dev/sda

Здесь и выше /dev/sda имя файла вашего жесткого диска.

Аутентификация без пароля

Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации — с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.

Настроить такое поведение очень легко. Сначала создайте ключ командой:

ssh-keygen -t rsa

Во время создания ключа нужно будет ответить на несколько вопросов, расположение оставляйте по умолчанию, если хотите подключаться без пароля — поле Passphare тоже оставьте пустым.

Затем отправляем ключ на сервер:

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

Взять пароль из локального файла

Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да — возможно. Для этого используется оператор перенаправления ввода Bash:

Изменить приветствие SSH

При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:

Смотрим неудачные попытки входа SSH

Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

cat /var/log/secure | grep «Failed password for»

Передача файлов по SSH

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

$ scp /адрес/локального/файла пользователь@ хост: адрес/папки

Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

cat localfile | ssh user@host «cat > remotefile»

ssh user@host «cat > remotefile»

Пойдем еще дальше, вы можете сжимать файлы перед передачей с помощью tar, а потом их сразу же на лету распаковывать:

tar czf — /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/

Такое копирование файлов ssh позволяет отправлять сразу целые папки.

Запуск графических приложений по ssh

Если вам нужно запустить то или иное графическое приложение на удаленной машине необязательно для этого использовать VNC, вы можете обойтись возможностями ssh. Программа будет выполняться на стороне сервера, а вам будет лишь транслироваться окно, чтобы вы могли сделать все что нужно. Причем все данные шифруются. Чтобы эта функция работала, нужно включить ее поддержку на стороне сервера.

Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:

ssh -XC user@remotehost «eclipse»

Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С — сжатие данных.

Завершение сессии SSH

Если вы использовали SSH с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение — Escape последовательности. Чтобы активировать их поддержку добавьте строку:

В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:

Другие управляющие символы можно узнать нажав:

Туннели SSH

С помощью SSH туннелей вы можете пробросить порт с удалённого сервера на локальную машину. Это очень полезно, в первую очередь, для разработчиков. Для того чтобы пробросить порт с удалённой машины локальной используйте опцию -L и такой синтаксис:

$ ssh -L локальный_порт :удаленный_адрес : удаленный_порт пользователь@сервер

Например, сделаем удалённую базу данных доступной локально на порту 5555. Для этого выполните подставив свои значения:

$ ssh -N -L 5555:127.0.0.1:3306 root@losst-1

Читайте также:  Как открыть под линукс

Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт — 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:

$ ssh -N -R 5555:127.0.0.1:3306 root@losst-1

Теперь локальная база данных на порту 3306 будет доступна на удалённом сервере при обращении к порту 5555.

Выводы

Теперь вы знаете как пользоваться SSH. Как видите, технология SSH позволяет сделать намного больше чем можно предположить с первого взгляда, и это еще далеко не все. Какие интересные возможности SSH используете вы при повседневной работе? Поделитесь в комментариях!

Источник

How to open ssh 22/TCP port using ufw on Ubuntu/Debian Linux

H ow do I allow incoming SSH connections from a specific IP address or subnet on a Ubuntu or Debian Linux server using ufw? How do I open ssh 22/TCP port using ufw on Ubuntu or Debian server?

Tutorial details
Difficulty level Easy
Root privileges Yes
Requirements ufw on Ubuntu/Debian Linux
Est. reading time 3 mintues

UFW is an acronym for uncomplicated firewall. It is used for managing a Linux firewall and aims to provide an easy to use interface for the user. In this tutorial, you will learn how to use UFW a frontend to iptables for open incoming SSH port / connection on Ubuntu Linux 16.04/18.04/20.04 LTS or Debian Linux server.

Fig.01: Allow Incoming SSH from Specific IP Address or Subnet

ssh is a client program for logging into a remote machine and for executing commands on a remote Linux or Unix computer. SSHD is the daemon program for ssh. Bots and unwanted people often target SSHD. Hence, you must protect your server.

Open SSH port using ufw

The syntax is as follows to open ssh port using ufw command:
sudo ufw allow ssh
OR
$ sudo ufw allow 22/tcp
One can add the comment as follows:
$ sudo ufw allow 22/tcp comment ‘Open port ssh tcp port 22’
If you are running ssh on TCP port # 2222 , enter:
$ sudo ufw allow 2222 /tcp

Allowing SSH connections

In this example, I am going to configure my server to allow incoming SSH connections but only from IP address 192.168.1.100 and sub/net (CIDR) 192.168.2.0/24:
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw allow from 192.168.2.0/24 to any port 22 proto tcp
Verify it:
sudo ufw status

How to allow incoming SSH from specific IP address

The syntax is same as above but we are going restrict destionation IP address too:
$ sudo ufw allow from < IP_ADDRESS_HERE >to any port 22
To allow incoming SSH connections from a specific IP address named 202.54.1.1, enter:
$ sudo ufw allow from 202.54.1.1 to any port 22
In this example, allow from 10.105.28.0/24 to SSH server running at 10.105.29.1 and TCP port 22:
sudo ufw allow from 10.105.28.0/24 to 10.105.29.1 port 22 proto tcp comment ‘Allow SSH’

Opening ssh port using ufw for VPN IP

Say you have a VPN with a public IPv4 address 139.1.2.3 and only wanted to ssh access from that IP. Then you would run:

Источник

How to install and use SSH on Linux

SSH or Secure Shell allows you to connect between computers and encrypt traffic between them.

For example, I use SSH to connect to my virtual private server and to my office computer. Usually, it works only through the terminal. However, you can connect it to your file manager or use some graphical programs like FileZilla, if you do not want to type commands. You can also use graphical forwarding and open graphical programs from the remote server in your local computer.

SSH is a simple, reliable, and very secure way to establish a connection between computers. In this post, you will learn how to install, configure, and use SSH on Linux. In particular, I will show how to:

Configure SSH on a Local Computer

First, you need to set up your client Linux machine. This is the computer you will use to connect from.

You need to install openssh-client on your Linux computer.

If you also need to use Windows as a client install PuTTY.

Configure SSH on a Remote Computer

Next, configure the computer you want to connect to.

Install SSH server

On the remote computer, you need to install openssh-server .

Obviously, you will need to have physical access to the remote computer to install this package. For example, if it is my office computer, I will go to my office and install this openssh-server program.

Check SSH status

After the installation, check that SSH is running with:

You should see that it is active:

If it has not started, start it manually:

or simply reboot the system.

Find out Server’s IP

Next, you need to determine the IP address of this remote computer.

The easiest way is to check the network settings. If you have a graphical desktop in that computer, open the network settings and search for IP address.

This is how it looks in Plasma 5:

And in Ubuntu GNOME:

If you only have the command line, run:

Usually, you will see your IP address in the eth0 connection.

Write down this address, you will need it to be able to connect to this remote computer.

Open SSH port in Firewall

It is possible that you use a firewall and it may block your remote access. So, check open ports:

You should see that port 22 is open. If you do not find port 22 open among open ports, go to your firewall settings and open it.

If you use UFW run this command:

I discuss whether you need a firewall in Linux and how to use it in this post.

Connect using SSH

Now, I assume your remote computer is configured and you are sitting in front of your client Linux machine.

In your client Linux computer, run:

You use the username of the remote computer and the IP address is the address you wrote down in a previous step.

If you get a warning “Are you sure you want to continue connecting (yes/no)?”, type yes.

After you typed the password of your user at the remote computer, you will be logged in to a remote Linux computer.

Now, you can work on this remote computer as if you would be sitting in front of that computer and using the terminal.

SSH in FileZilla

If you simply want to work with files without running any programs, you can also connect to your remote server with FileZilla.

In FileZilla, go to the Site manager and add a new site with SFTP protocol:

You will get your local files on the left and your remote files on the right.

You can navigate in FileZilla with your mouse and transfer files between your computers by simple drag-and-drop between these two panels.

SSH in File Manager

Similarly, you can add the remote server to your File Manager. I use Dolphin file manager of Plasma 5 but the procedure is very similar in other file managers.

Go to the Network in your file manager and add a Network folder:

Among these options, select SFTP protocol, give a name to this folder, provide the user name of the remote account, IP address of the remote computer. In the field “remote folder path”, you can use your remote user home folder or any other folder you want to connect to.

As a result, you will see all the folders and files of your remote computer in your file manager.

Forward X

You can also forward graphical application from your remote computer to your local computer. To do that, you simply need to add the option -X during the login.

Now, if you start any graphical program in a remote computer, it will open in your local computer, like this Firefox on the screenshot.

Transfer files

To transfer a file to a remote computer in the terminal run:

And to transfer a file from a remote computer to your local computer simply type first the remote address and then local.

You can also use wild cards to transfer many files at the same time. I showed how to use wild cards in this YouTube video.

Final thoughts

As you have seen SSH is a pretty handy program. It is not difficult to install and use. However, there are some more configurations which I did not cover in this post. For example, you can enhance the security of your ssh connection with SSH keys and white-listed IP addresses. I will cover this topic in the next post. So, subscribe to this blog updates and you won’t miss it.

Источник

Читайте также:  Проверка подлинности windows роли
Оцените статью