내 로컬 컴퓨터(Mac)가 있고 서버 B(Linux)에 액세스하고 싶습니다. 서버 B는 서버 A(Linux)를 통해 액세스해야 합니다. 다음과 같이 로컬 시스템에서 .ssh/config 파일을 수정하여 터널을 설정했습니다.
Host serverB
HostName serverB.com
User Ant
ProxyCommand ssh -q -Y serverA.com -W %h:%p
이것은 잘 작동했습니다 [0]. 다음으로 SSH 키를 사용하여 로컬에서 serverA로, serverA에서 serverB로 비밀번호 없는 로그인을 설정했습니다. 이것은 내가 할 수 있다는 것을 의미합니다
> ssh [email protected]
(serverA)> ssh [email protected]
(serverB)>
모든 것이 정상입니다. 이제 내가 원하는 것은 비밀번호 없이 서버 B에 연결할 수 있는 것입니다.
> ssh [email protected]
계속하기 전에 A와 B를 분리하기 위한 비밀번호를 묻는 메시지가 표시되었습니다. 이것은 다음의 출력입니다 ssh -v Ant@serverB
.
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/Ant/.ssh/config
debug1: /Users/Ant/.ssh/config line 16: Applying options for serverB
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Executing proxy command: exec ssh -q -Y serverA.com -W serverB.com:22
debug1: identity file /Users/Ant/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6
debug1: permanently_drop_suid: 501
[email protected]'s password:
이라고 볼 수 있어요노력하다내 키를 사용하여 로그인하고 있는데 문제가 있습니다. 또한 내 RSA 키가 비표준 위치에 저장된다는 점을 추가해야 하므로 이를 내 .ssh/config 파일에 추가했습니다.
IdentityFile ~/.ssh/key_serverA
어떤 아이디어가 있나요?
[0]: 어떤 이유에서인지 사용자 이름이 잘못되어 더 이상 작동하지 않습니다. 비밀번호를 묻는 메시지가 표시됩니다[이메일 보호됨]대신에[이메일 보호됨]
답변1
User
섹션의 옵션은 Host
해당 호스트와 일치하는 연결에만 적용되며 SSH 구성 설정이 독립적으로 적용되는 에이전트 등에 대해 실행되는 명령에는 반드시 적용되는 것은 아닙니다.
따라서 ProxyCommand
명시적으로 거기에 있거나 이에 대해 일치하는 다른 블록이 설정 Ant@serverA
되어 있어야 합니다 .Host
serverA
User Ant
답변2
이 솔루션은 질문 작성자가 제안했습니다.
해결책을 찾았습니다. 문제는 어떤 이유로 ssh가 Ant(serverA 및 serverB의 사용자 이름) 대신 local_username을 사용하여 serverA에 액세스하려고 한다는 것입니다. 이 문제를 해결하기 위해 configtunnel 명령을 수정하여 내 사용자 이름을 명시적으로 추가했습니다.
Host serverB HostName serverB.com User Ant ProxyCommand ssh -q -Y [email protected] -W %h:%p
이로써 문제가 해결되었습니다. 이제 비밀번호 없는 로그인도 serverB에서 작동합니다! :-)