ssh

Проброс портов с помощью SSH

В этой статье хотел бы немного рассказать о такой замечательной возможности SSH как Port Forwarding (или SSH Tunneling). Начну с того, что ssh - это вообще сам по себе отличный инструмент администрирования, который несомненно придет на помощь, когда нужно удаленно зайти на сервер, поуправлять различными сервисами, передать или загрузить файлы и т.д. Собственно, знают это и пользуются этим все, но немногие помнят про то, что ssh еще может "пробрасывать" порты.

Лучше всего сразу продемонстрировать все на примерах. Представим, что у вас дома работает некий сервер homeserver, находящийся в локальной сети и на нем запущен допустим VNC server на порту 5900, принимающий соединения только из этой самой локальной сети. Усложним задачу тем, что на homeserver нету SSH-сервера, но в локалке есть другая машина, принимающая внешние соединения по SSH (назовем ее homegateway).

Доступ к серверу по SSH с помощью публичного ключа

Для того, чтобы получить доступ к удаленной машине по протоколу SSH необходимо знать, как минимум логин и пароль. Не всегда удобно вводить их каждый раз, особенно если используемых удаленных сервером слишком много. Для упрощения жизни, можно использовать доступ по общему ключу.

Процедура довольно простая.
1. На локальной машине необходимо сгенерировать публичный и приватный ключи без passphrase:

[me@local .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/me/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/me/.ssh/id_rsa.
Your public key has been saved in /home/me/.ssh/id_rsa.pub.
The key fingerprint is:
6a:f0:01:e1:3b:61:7f:2b:39:e2:12:02:69:03:65:32