85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
|
# SSH подключение через промежуточный узел без доступа к промежуточному узлу
|
|||
|
|
|||
|
Задача: обеспечить подключение к узлу в закрытом сегменте сети через промежуточный (bastion) узел. При этом закрыть возможность подключения к промежуточному узлу.
|
|||
|
|
|||
|
Упрощённая схема представлена на русунке
|
|||
|
|
|||
|

|
|||
|
|
|||
|
## Вводные данные
|
|||
|
|
|||
|
- `srchost` - узел с которого необходимо обеспечить подключение
|
|||
|
- `jumpuser` - пользователь, который инициирует подключение
|
|||
|
- `bastion` - промежуточный узел, через который необходимо обеспечить подключение
|
|||
|
- `enduser` - пользователь, от имени которого необходимо выполнить подключение
|
|||
|
- `dsthost` - узел, к которому необходимо подключиться
|
|||
|
|
|||
|
Порядок подключения:
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@srchost:~$ ssh -A -J jumpuser@bastion enduser@dsthost
|
|||
|
```
|
|||
|
|
|||
|
## Настройка подключения
|
|||
|
|
|||
|
### Сегенерировать ssh ключ
|
|||
|
|
|||
|
На узле `srchost` для пользователя `jumpuser` сгенерировать ssh-ключ
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@srchost:~$ ssh-keygen
|
|||
|
```
|
|||
|
|
|||
|
### Скопировать публичный ключ на узел `bastion`
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@srchost:~$ ssh-copy-id jumpuser@bastion
|
|||
|
```
|
|||
|
|
|||
|
### Проверить подключение
|
|||
|
|
|||
|
Убедиться, что есть возможность подключения без пароля
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@srchost:~$ ssh jumpuser@bastion
|
|||
|
jumpuser@bastion:~$
|
|||
|
```
|
|||
|
|
|||
|
### Скопировать публичный ключ на узел `dsthost`
|
|||
|
|
|||
|
Скопировать публичный ключ `jumpuser` в файл `/home/enduser/.ssh/authorized_keys` на узле `dsthost`
|
|||
|
|
|||
|
```shell
|
|||
|
enduser@dsthost:~$ cat .ssh/authorized_keys
|
|||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqAk2CZKveP6zvYKBlwxhlhontNHOpMiKdS1rIfJ8r5J9CHn3EbZftfwMIPp2dji4YsKkCHVEVHbwLf+efc/8wUxnaBdVZPaP/SUT9+f3NjjVxS7vPfIw24qHTltIIcJaeJMPHZ5BKtF9Gvgkh4N4MLH2e2o7OcekQej/JEQSDneqgEfPe5Xhks34VOOkhaM02skyFjCEacLBfBbYHqlwWDEEtUAMzQGdgt9h85WWcCBA/qRT8eRDvKFYEr7238jREKD0MPQ1R5jIjk37GFa0vr7vEAO9mTI4hGHl89YqnxaWg6P5gO+lXGsemE+0oXpWG7zKt8PF2nPK6dq93RFeb jumpuser@srchost
|
|||
|
```
|
|||
|
|
|||
|
### Проверить подключение через промежуточный хост с пробросом ключа
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@srchost ~$ ssh -A -J jumpuser@srchost enduser@dsthost
|
|||
|
enduser@dsthost ~$
|
|||
|
```
|
|||
|
|
|||
|
### Ограничить возможность подключения пользователем `jumpuser` к `bastion`
|
|||
|
|
|||
|
В конфигурационный файл `/etc/ssh/sshd_config` добавить
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@bastion:~ $ tail -n 7 /etc/ssh/sshd_config
|
|||
|
|
|||
|
Match User jumpuser
|
|||
|
PermitTTY no
|
|||
|
X11Forwarding no
|
|||
|
PermitTunnel no
|
|||
|
GatewayPorts no
|
|||
|
ForceCommand /usr/sbin/nologin
|
|||
|
```
|
|||
|
|
|||
|
Таким образом получается подключиться к `enduser@dsthost` через промежуточный узел `jumpuser@bastion` без возможности подключения к `jumpuser@bastion`
|
|||
|
|
|||
|
```shell
|
|||
|
jumpuser@srchost ~$ ssh -A -J jumpuser@srchost enduser@dsthost
|
|||
|
enduser@dsthost ~$
|
|||
|
```
|