The concept of bastion hosts is nothing new to computing. Baston hosts are usually public-facing, hardened systems that serve as an entrypoint to systems behind a firewall or other restricted location, and they are especially popular with the rise of cloud computing.
The ssh
command has an easy way to make use of bastion hosts to connect to a remote host with a single command. Instead of first SSHing to the bastion host and then using ssh
on the bastion to connect to the remote host, ssh
can create the initial and second connections itself by using ProxyJump
.
ProxyJump
The ProxyJump
, or the -J
flag, was introduced in ssh
version 7.3. To use it, specify the bastion host to connect through after the -J
flag, plus the remote host:
$ ssh -J <bastion-host> <remote-host>
You can also set specific usernames and ports if they differ between the hosts:
$ ssh -J user@<bastion:port> <user@remote:port>
The ssh
man (or manual) page (man ssh
) notes that multiple, comma-separated hostnames can be specified to jump through a series of hosts:
$ ssh -J <bastion1>,<bastion2> <remote>
This feature is useful if there are multiple levels of separation between a bastion and the final remote host. For example, a public bastion host giving access to a "web tier" set of hosts, within which is a further protected "database tier" group might be accessed.
Hard-coding proxy hosts in ~/.ssh/config
The -J
flag provides flexibiltiy for easily specifying proxy and remote hosts as needed, but if a specific bastion host is regularly used to connect to a specific remote host, the ProxyJump
configuration can be set in ~/.ssh/config
to automatically make the connection to the bastion en-route to the remote host:
### The Bastion Host
Host bastion-host-nickname
HostName bastion-hostname
### The Remote Host
Host remote-host-nickname
HostName remote-hostname
ProxyJump bastion-host-nickname
Using the example configuration above, when an ssh
connection is made like so:
$ ssh remote-host-nickname
The ssh
command first creates a connection to the bastion host bastion-hostname
(the host referenced, by nickname, in the remote host’s ProxyJump
settings) before connecting to the remote host.
An alternative: Forwarding stdin and stdout
ProxyJump
is the simplified way to use a feature that ssh
has had for a long time: ProxyCommand
. ProxyCommand
works by forwarding standard in (stdin) and standard out (stdout) from the remote machine through the proxy or bastion hosts.
The ProxyCommand
itself is a specific command used to connect to a remote server—in the case of the earlier example, that would be the manual ssh
command used to first connect to the bastion:
$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host
The %h:%p
arguments to the -W
flag above specify to forward standard in and out to the remote host (%h
) and the remote host’s port (%p
).
ProxyCommand
in ~/.ssh/config
As with ProxyJump
, ProxyCommand
can be set in the ~/.ssh/config
file for hosts that always use this configuration:
Host remote-host
ProxyCommand ssh bastion-host -W %h:%p
With this setting in ~/.ssh/config
, any ssh
connection to the remote host is accomplished by forwarding stdin and stdout through a secure connection from bastion-host
.
The ssh
command is a powerful tool. While it might mostly be used in its simplest form, ssh user@hostname
, there are literally dozens of uses, with flags and configurations to make connections from one host to another. Check out ssh
's manual page (man ssh
) sometime to discover all of the different options available with this seemingly simple program.
저자 소개
Chris Collins is an SRE at Red Hat and a Community Moderator for Opensource.com. He is a container and container orchestration, DevOps, and automation evangelist, and will talk with anyone interested in those topics for far too long and with much enthusiasm.
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
오리지널 쇼
엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리
제품
- Red Hat Enterprise Linux
- Red Hat OpenShift Enterprise
- Red Hat Ansible Automation Platform
- 클라우드 서비스
- 모든 제품 보기
툴
체험, 구매 & 영업
커뮤니케이션
Red Hat 소개
Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.