4.1 KiB
SSH подключение через промежуточный узел без доступа к промежуточному узлу
Задача: обеспечить подключение к узлу в закрытом сегменте сети через промежуточный (bastion) узел. При этом закрыть возможность подключения к промежуточному узлу.
Упрощённая схема представлена на рисунке
Вводные данные
srchost
- узел с которого необходимо обеспечить подключениеjumpuser
- пользователь, который инициирует подключениеbastion
- промежуточный узел, через который необходимо обеспечить подключениеenduser
- пользователь, от имени которого необходимо выполнить подключениеdsthost
- узел, к которому необходимо подключиться
Порядок подключения:
jumpuser@srchost:~$ ssh -A -J jumpuser@bastion enduser@dsthost
Настройка подключения
Сгенерировать ssh ключ
На узле srchost
для пользователя jumpuser
сгенерировать ssh-ключ
jumpuser@srchost:~$ ssh-keygen
Скопировать публичный ключ на узел bastion
jumpuser@srchost:~$ ssh-copy-id jumpuser@bastion
Проверить подключение
Убедиться, что есть возможность подключения без пароля
jumpuser@srchost:~$ ssh jumpuser@bastion
jumpuser@bastion:~$
Скопировать публичный ключ на узел dsthost
Скопировать публичный ключ jumpuser
в файл /home/enduser/.ssh/authorized_keys
на узле dsthost
enduser@dsthost:~$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqAk2CZKveP6zvYKBlwxhlhontNHOpMiKdS1rIfJ8r5J9CHn3EbZftfwMIPp2dji4YsKkCHVEVHbwLf+efc/8wUxnaBdVZPaP/SUT9+f3NjjVxS7vPfIw24qHTltIIcJaeJMPHZ5BKtF9Gvgkh4N4MLH2e2o7OcekQej/JEQSDneqgEfPe5Xhks34VOOkhaM02skyFjCEacLBfBbYHqlwWDEEtUAMzQGdgt9h85WWcCBA/qRT8eRDvKFYEr7238jREKD0MPQ1R5jIjk37GFa0vr7vEAO9mTI4hGHl89YqnxaWg6P5gO+lXGsemE+0oXpWG7zKt8PF2nPK6dq93RFeb jumpuser@srchost
Проверить подключение через промежуточный хост с пробросом ключа
jumpuser@srchost ~$ ssh -A -J jumpuser@srchost enduser@dsthost
enduser@dsthost ~$
Ограничить возможность подключения пользователем jumpuser
к bastion
В конфигурационный файл /etc/ssh/sshd_config
добавить
jumpuser@bastion:~ $ tail -n 7 /etc/ssh/sshd_config
Match User jumpuser
PermitTTY no
X11Forwarding no
PermitTunnel no
GatewayPorts no
ForceCommand /usr/sbin/nologin
После внесения изменений, необходимо перезапустить службу ssh
jumpuser@bastion:~ $ sudo systemctl restart ssh
Убедиться в отсутствии возможности подключения к узлу bastion
jumpuser@srchost ~$ ssh jumpuser@bastion
ssh: PTY allocation request failed on channel 0
This account is currently not available.
Connection to bastion closed.
jumpuser@srchost ~$
Таким образом получается подключиться к enduser@dsthost
через промежуточный узел jumpuser@bastion
без возможности подключения к jumpuser@bastion
jumpuser@srchost ~$ eval "$(ssh-agent)"
jumpuser@srchost ~$ ssh-add .ssh/id_rsa
jumpuser@srchost ~$
jumpuser@srchost ~$ ssh -A -J jumpuser@srchost enduser@dsthost
enduser@dsthost ~$
Источник: - https://habr.com/ru/companies/cloud4y/articles/530516/