Безопасный Shell, или SSH , это что-то наподобие «швейцарского складного ножа», когда дело идет об администрировании и управлении сценариев разработки приложений Linux (и др. подобные UNIX). В данной статье я исследую очень специфический способ использования SSH: хост-бастион SSH. В таком типе классификации, трафик SSH для серверов, которые не доступны напрямую через SSH, вместо этого направлены через хост-бастион, который проксирует соединение между клиентом SSH и удаленными серверами.nnВначале может показаться, сто использование SSH bastion host -это довольно таки специализированный случай его использования. Тем не менее, в действительности, я уверен, что это тот шаблон разработки, который может быть полезным в разных ситуациях. Я планирую исследовать случаи использования SSH bastion host в следующей статье.nnДанная диаграмма иллюстрирует концепт использования SSH bastion host для предоставления доступа к Linux-серверов, расположенных внутри какой-то облачной сети (например, сетевой абонент OpenStack Neutron или AWS VPC):nnSSH bastion host диаграмма. Давайте лучше рассмотрим основные компоненты самой установки SSH bastion host.nnВо-первых, вы захотите убедиться, что аутентификация по публичному ключу точно настроена, как на bastion host, так и на удаленных экземплярах. Данная тема широко обсуждалась в других местах (здесь, например), поэтому я не буду детально писать об этом. Вы можете использовать один ключ для bastion host и удаленных экземпляров или разные ключи; вам только нужно убедиться, что ключи загружены ssh-agent правильно, поэтому они могут применяться как надо. ( Заметьте, что использование ключа публичного доступа необязательно, но иногда это то, что вам действительно нужно сделать).nnДалее, вы захотите убедиться, что разрешение имени работает как от клиента к bastion так и от bastion к удаленным экземплярам. Bastion host будет использовать имя узла, заданное в командной строке ssh, поэтому если имя не будет определено, то пропадет соединение.nnИ наконец, вы захотите настроить ProxyCommand для удаленных экземпляров в вашем файле конфигураций SSH. Например, скажем, что ваш удаленный пример называется «private1» и вы хотите запустить SSH соединения через bastion host «bastion». Подходящая конфигурация SSH может выглядить следующим образом:n
Hostprivate1nIdentityFile~/.ssh/rsa_private_keynProxyCommandsshuser@bastion-W%h:%pnHostbastionnIdentityFile~/.ssh/bastion_rsa_key
С этой готовой к использованию конфигурацией, когда вы вбиваете ssh user@private1, SSH установит соединение с bastion host и потом через соединение bastion host присоединится к «private1», используя заданные ключи. Пользователь не увидит ничего из этого; он или она только увидит, когда появится shell «private1». Однако, если вы копнете немного глубже (попытаетесь запустить того, кто на удаленном узле), вы увидите, что соединения появляются из bastion host, а не из начального клиента SSH. Удобно, не правда ли?nnВ будущей статье, вы найдете анализ одного и более примеров того, когда использование SSH bastion host может быть очень полезным (или даже необходимым).n
Дополнительные ресурсы
Мне кажется, что данная статья чрезвычайно полезна при работе при помощи деталей конфигурации SSH bastion host.n
Администрирование и поддержка серверов,[email protected]