을 통해 내 로컬 컴퓨터 A에서 점프 호스트 서버 B를 SSH로 연결할 수 있습니다 ssh B
.
서버 C는 주소 지정이 가능하고(주소는 C.internal임) 를 통해 B에서 액세스할 수 있습니다 ssh C
.
로컬 컴퓨터에서 직접 C로 SSH를 통해 어떻게 접속하나요?
SSH 명령과 구성 파일은 어떤 모양입니까?
A의 SSH 구성:
Host B
User userB
HostName B.example.com
IdentityFile ~/.ssh/keyB
B의 SSH 구성:
Host C
HostName C.internal
User userC
IdentityFile ~/.ssh/keyC
~/.ssh/keyC
호스트 B에서 로컬 시스템 A로 복사하지 않고도 이 작업을 수행할 수 있습니까 ?
답변1
여러 가지 옵션이 있지만 그 중 "단일 명령"은 없습니다.
C에 대해 두 번째 SSH 명령을 실행하는 B에 대한 SSH 명령을 실행할 수 있습니다. -t
대화형 SSH에서 작동하도록 하려면 옵션을 추가해야 합니다 .
ssh -t hostB "ssh hostC"
ssh -t hostB "ssh -t hostC htop"
ssh hostB ssh hostC ls -la /etc
A에서 C로 SSH를 "직접"하는 방법을 원한다면 SSH-agent 연결을 전달하기 위한 추가 장치가 필요합니다.B에서로컬 시스템에(즉, 일반적으로 수행하는 작업과 반대 ssh -A
)
호스트 B에 대해 SSH를 수행한 다음 수동으로 지정된 경로에서 ssh-agent를 시작합니다. 로컬 클라이언트가 원격 에이전트 프로세스에 액세스하도록 허용하려면 SSH "스트림 전달" 기능을 사용하십시오.
HostA$ ssh -t -L /tmp/agent:/tmp/agent HostB \ "ssh-agent -a /tmp/agent sh -c 'ssh-add ~/.ssh/keyC && sleep infinity'"
(ssh/config 옵션은 입니다
LocalForward
.)위의 연결이 실행되는 동안 HostB에만 존재하는 키를 사용하여 일반 ProxyJump 구성을 사용하여 HostA에서 HostC로 연결할 수 있습니다.
HostA$ export SSH_AUTH_SOCK=/tmp/agent HostA$ ssh -J HostB HostC
(ssh/config 옵션은
IdentityAgent
및 입니다ProxyJump
.)
또 다른 옵션은 keyC
B에서 A로 복사하여 저장하는 것 입니다.보안 하드웨어에서TPM 칩 또는 스마트 카드(PIV 모드가 있는 Yubikey도 포함)와 같은 것입니다. 이를 통해 키를 도난당할 가능성 없이 머신 A에서 로컬로 사용할 수 있습니다.
(Linux의 TPM2.0의 경우 tpm2-pkcs11
또는 중 하나를 사용할 수 ssh-tpm-agent
있습니다. Windows의 TPM2.0은 PuTTY-CAC를 통해 사용할 수 있습니다. PIV가 있는 Yubikey의 경우 Windows와 Linux 모두에 대한 PKCS#11 모듈이 있습니다. 저는 Ebay의 eToken 5110 SSH에서 FIDO2 키를 사용하는 방법도 있지만 새 키를 생성해야 합니다.
답변2
/etc/ssh/ssh_config
global 또는 user와 같은 ssh_config 파일이 필요합니다 ~/.ssh/config
.
Host B
HostName 10.0.0.1
User username_on_B
IdentityFile ~/.ssh/id_rsa_for_B
ForwardAgent yes
# final destination
Host C
HostName C.internal
User your_username_on_C
ProxyJump B
IdentityFile ~/.ssh/id_rsa_for_C
이제 에서 을 A
(를) 수행할 수 있습니다 ssh
C
.