요새(프록시)가 아닌 원본의 키를 사용하여 요새(프록시)를 통해 서버에 SSH로 연결하는 방법

요새(프록시)가 아닌 원본의 키를 사용하여 요새(프록시)를 통해 서버에 SSH로 연결하는 방법

그래서 저는 본질적으로 이렇게 하려고 합니다.

ssh [email protected] -t ssh bob2@test-vm

위의 내용은 터미널에 넣으면 잘 작동하지만 .ssh 구성 파일을 통해 복제하는 데 어려움을 겪고 있습니다.

구성 파일 안에 있는 내용은 다음과 같습니다.

Host bastion
     HostName 35.192.152.35
     User bob2

Host test-vm
     User bob2
     FOrwardAgent yes
     ProxyCommand ssh bastion nc %h %p 2> /dev/null

그런데 "권한이 거부되었습니다"라는 오류가 나타납니다. 공개 키 파일이 잘못되었나요? 나는 이 게시물에서 위와 같은 내용을 생각해 냈습니다. https://unix.stackexchange.com/questions/124078/how-to-ssh-to-a-server-using-another-server-with-key-from-the-second-server

어쨌든 그것은 그 사람에게는 효과가 있었지만 나에게는 효과가 없는 것 같습니다. 또한 모든 당사자(원본, 요새 및 서버)에서 sshd_chroot 구성에서 에이전트 전달 및 TCP 전달을 허용하려고 시도했지만 아무런 차이가 없었습니다.

ID 경로를 강제로 지정하는 경우:

Host bastion
     HostName 35.192.152.35
     User bob2
     IdentityFile /Users/bob/.ssh/id_rsa

Host test-vm
     User bob2
     FOrwardAgent yes
     ProxyCommand ssh bastion nc %h %p 2> /dev/null
     IdentityFile /home/bob2/.ssh/id_ed25519

그런 다음 "/home/bob2/.ssh/id_ed25519" 디렉터리를 찾을 수 없다는 것 외에도 동일한 오류가 발생합니다.

누구든지 아이디어가 있나요?

답변1

요새가 네트워크 방화벽을 파괴하기 위한 것이지 키를 저장하기 위한 것이 아니라는 점을 깨닫고 나면 이를 최소한의 구성으로 2명령 솔루션으로 변경할 수 있습니다.

로컬 머신인 A에서 ssh-agent가 실행 중인지 확인하세요.

B에 일회성 명령을 수행합니다. 여기서 B에는 다음 구성이 있습니다.

Host B
        ForwardAgent yes
        User proxyuser

그리고 다음 명령을 실행하세요.

$ ssh B ssh-add # and possibly a reference to a non-standard key

이 시점에서 로컬 ssh-agent는 캐시에 원격 키를 갖게 됩니다.

그 후에는 일반 -Jor ProxyJumpto가 C'그냥 작동'합니다.

Host C
        User user
        ProxyJump proxyuser@B

$ ssh C

추가 일회성 명령으로 인한 약간의 불편함을 감수하고 구성을 꽤 정상적인 IMO로 유지할 수 있습니다.

어쨌든 키가 로컬 컴퓨터에 캐시될 경우 요새에 키를 저장하면 실제로 추가 안전이 제공되는지 자문해 볼 수 있습니다. 물론 약간의 이득도 있지만~ 아니다키를 디스크에 저장하지만 로컬 시스템이 해킹된 경우 파일을 읽거나 키가 로드된 SSH 에이전트와 통신하는 데 큰 차이가 없습니다.

답변2

test-vm이 요새에서 키를 찾도록 구성하기를 원하는 것 같습니다. 그래서 나는 다음을 제안합니다:

  1. 키 파일을 요새의 bob2의 .ssh 폴더에 복사합니다.
  2. 추가하다프록시 명령구성에 ssh-add를 사용하세요.

답변3

아래는 저에게 효과적입니다... 최종 목적지의 IP 주소를 지정한다는 점을 제외하면 귀하의 것과 거의 동일합니다(귀하의 경우에는 관련이 없을 수도 있음).복사해야 했어요내 ssh_config가 요새 중간에 있지 않은 키 파일을 찾고 있기 때문에 요새에서 내 로컬 호스트까지의 키는 다음과 같습니다.

==== added to .ssh/config ====
Host mybastion
    HostName 133.35.41.9
    User bastuser
    IdentityFile /Users/bchapman/.ssh/bast_priv.key

Host mytarget
    HostName 109.0.1.38
    ProxyCommand ssh -q -W %h:%p mybastion
    User targuser
    IdentityFile /Users/bchapman/.ssh/targ_priv.key
==============

그 후에는 ssh mytarget, scp localfile mytarget: 등을 사용할 수 있습니다.

관련 정보