Links For Fast Navigation
Вход по ключу на удаленную машину
Сделать каталог для ssh:
$ cd
$ mkdir .ssh
$ chmod 700 .ssh
Теперь можно добавить ключ в файл authorized_keys
:
$ echo '<your_ssh_pub_key>' >> ~/.ssh/authorized_keys
Поправим права на authorized_keys
:
$ chmod 600 authorized_keys
Конфигурация для беззаботного входа по ssh
Для начала создадим файл конфига в каталоге ~/.ssh
:
$ touch ~/.ssh/config && chmod 700 ~/.ssh/config
Затем можем начать заполнять его для себя. Например:
Host dev
Hostname 192.168.1.10
Port 1122
User root
ForwardAgent yes
Host prod
Hostname production.example.com
User user
Host
- это имя (алиас) хоста, которое вы будете вводить для подключения. Можно указать несколько алиасов ($ ssh dev
)Hostname
- куда подключатьсяPort
- порт для подключенияUser
- пользователь для подключенияForwardAgent
- форвард ключа ssh
Туннелирование ssh
Режим эмуляции Socks proxy в SSH
Допустим, у нас есть рабочая станция в локальной сети за firewall’ом; также имеется ssh-доступ на сервер в Интернете. Кроме ssh, никакой связи с внешним миром не имеется, а очень хочется, например, подключиться к какому-нибудь jabber-серверу.
На рабочей станции запускаем простую команду:
$ ssh -D 5555 user@remotehost -f -N
, где -D 5555
- эмуляция SOCKS сервера через порт 5555
-f
- работа в фоне, после аутентификации.
-N
- не запускать shell на удаленном хосте.
Теперь, указав в настройках XMPP-клиента (например, Pidgin’а) в качестве SOCKS5 прокси localhost:5555, получим желаемый результат: Pidgin соединяется с сервером через внешний сервер.
Туннель ssh
Дано: сервер локальной сети ourproxy.provider.ru
, доступный извне.
Требуется: получить из дома доступ к ресурсам внутри локальной сети, например,
к интранет-серверу 10.10.5.1:80
Решение: выполнить на домашней машине команду, пробрасывающую туннель к
искомому IP-адресу через ourproxy.provider.ru
:
$ ssh -f -N user@ourproxy.provider.ru -L 8080:10.10.5.1:80
Опция -f
говорит ssh, что после соединения нужно уйти в background.
Опция -N
указывает, что никаких команд выполнять не нужно.
Ключ -L
означает, что соединения к localhost
на порт 8080
нужно перенаправлять
на 80
порт IP-адреса 10.10.5.1
Таким образом, набирая в браузере адрес http://localhost:8080, попадаем на нужный сервер.
Обратный туннель ssh
Дано: компьютер на работе, находящийся за firewall’ом и nat’ом; компьютер дома
с доступом в интернет;
сервер ourproxy.provider.ru
с работающим sshd, доступный обоим компьютерам.
Но в данном случае прямой доступ с ourproxy.provider.ru
к рабочей машине отсутствует.
Требуется: получить из дома доступ к сервису sshd на рабочем компьютере.
Решение: на рабочей машине выполнить команду:
$ ssh -f -N user@ourproxy.provider.ru -R 12345:localhost:22
Опции -f
и -N
описаны несколькими строчками выше.
Ключ -R
означает, что подключения к порту 12345
на ourproxy.provider.ru
будут
перенаправляться на 22
порт рабочего компьютера.
После выполнения этой команды с рабочей машины можно будет попасть на эту
машину с ourproxy.provider.ru
,
выполнив команду:
$ ssh -p 12345 user@locahost
По этому же принципу можно получить доступ к прочим ресурсам локальной сети. Вот еще один пример.
На рабочей машине:
$ ssh -f -N user@ourproxy.provider.ru -R 8080:10.10.5.1:80
На домашней машине:
$ ssh -f -N user@ourproxy.provider.ru -L localhost:8080:localhost:8080
Теперь, набрав в адресной строке браузера на домашнем компьютере http://localhost:8080, получаем доступ к интранет-серверу за семью замками двумя firewall-ами.