server1
두 개의 서버 가 있고 다음을 통해 연결할 server2
수 있습니다 .server2
server1
localUser@localMachine $ ssh user1@server1
user1@server1 $ ssh user2@server2
user2@server2 $
다음을 사용하여 한 단계로 이 작업을 수행할 수 있습니다.
localUser@localMachine $ ssh -t user1@server1 ssh user2@server2
user2@server2 $
ssh server2
내 로컬 컴퓨터에서 간단히 실행하고 직접 연결할 수 있기를 원합니다 . 위 명령을 별칭으로 설정할 수도 있지만 via 를 선호합니다 ~/.ssh/config
. 문제는 server2에 연결할 때 server1에 있는 SSH 자격 증명을 사용해야 하는데 이를 내 로컬 컴퓨터에 복사하고 싶지 않다는 것입니다. 이는 이 기능을 설정하는 "일반적인" 방법(local 에 다음을 추가하여 ~/.ssh/config
)이 실패함을 의미합니다.
Host server1
Hostname server1.example.com
User user1
Host server2
Hostname server2.example.com
User user2
ProxyJump server1
지금 연결하려고 하면 다음과 같은 결과가 나타납니다.
$ ssh server2
[email protected]: Permission denied (publickey).
~/.ssh/id_rsa_pub
로컬 컴퓨터가 아닌 로컬 컴퓨터 의 키를 사용해야 하기 때문입니다 server1
. 그렇다면 에 존재하는 자격 증명을 사용하여 로컬 장치 를 통과 하고 연결하도록 ~/.ssh/config
로컬 장치를 어떻게 설정합니까 ?server2
server1
server1
모든 컴퓨터는 Linux 컴퓨터이고, 원격 컴퓨터는 Ubuntu Server 18.04.4를 실행하고 있으며, 내 로컬 컴퓨터는 Arch Linux를 실행하고 있습니다.
나는 Hauke의 답변에 제공된 솔루션을 시도하고 다음을 추가했습니다 ~/.ssh/config
.
Host server1server2
Hostname server1
User user1
RemoteCommand ssh [email protected]
이것거의일하다! 이제 를 server2
사용 하여 연결할 수 있지만 ssh server1server2
프롬프트가 표시되지 않습니다.
localUser@localMachine $ ssh server1server2
Pseudo-terminal will not be allocated because stdin is not a terminal.
hostname
server2
위에서 볼 수 있듯이 거기에 연결되어 server2
있고 거기에서 명령을 실행할 수도 있지만 프롬프트가 표시되지 않습니다. 그런 다음 구성 파일 -t -t
에 명령을 추가해 보았습니다 .ssh
Host server1server2
Hostname server1
User user1
RemoteCommand ssh -t -t [email protected]
이것은 나에게 힌트를 주지만 쉘의 초기화 파일을 읽지 못하고 Ctrl+를 누르면 연결이 C끊어집니다 . server1 에서 수행하는 작업과 정확히 동일 ssh
하게 작동해야 합니다 . 이는 일반 쉘 초기화 파일을 읽어야 하며 Ctrl+C가 세션을 종료해서는 안 된다는 것을 의미합니다.ssh user2@server1
ssh user2@server2
답변1
SSH 구성을 통해 대상에서 명령을 실행하는 데는 최소한 두 가지 가능성이 있습니다.
- 원격 명령
- 단일 공개 키
command="command"
그래서
Host server1server2
Hostname server1
RemoteCommand ssh user2@server2
또는
Host server1server2
Hostname server1
IdentityFile ~/.ssh/id_ecdsa_force_command
그런 다음ssh server1server2
답변2
@αГsнιе가 나에게 지적해주었다.https://serverfault.com/q/337274/155817댓글에서 이를 기반으로 로컬 파일에서 다음 줄을 사용하여 작동하도록 했습니다 ~/.ssh/config
.
Host server2
Hostname server2.example.com
User user2
ProxyCommand ssh -o 'ForwardAgent yes' server1 'ssh-add && nc %h %p'
이제 다음과 직접 연결할 수 있습니다.
$ ssh server2
Identity added: /home/user1/.ssh/id_rsa (/home/user1/.ssh/id_rsa)
위 메시지는 ssh-add
server1의 내 ID를 server2에서 실행되는 인증 브로커에 추가함으로써 발생합니다. 그러나 이는 문제가 되지 않습니다.