%EC%9D%84%20%EC%88%98%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EC%A7%80%EC%A0%95%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내가 아는 한, 발행은 ssh -K somehost
kerberos 토큰을 사용하여 인증합니다 somehost
. 토큰으로 사용할 파일을 지정할 수 있습니까?
내 컴퓨터에는 Kerberos가 제대로 설정되지 않았지만 Kerberos가 제대로 설정된 컴퓨터에서만 TGT를 복사했습니다.
보다 구체적으로, 토큰을 /tmp/krb5cc_1000
(1000이 내 uid임) 에 복사하여 klist
다음과 같이 토큰을 인식합니다.
➜ ~ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]
Valid starting Expires Service principal
XXXX
XXXX
ssh
현재 내 노트북(L)에서 토큰을 발행할 수 있는 게이트웨이 서버(G)로 이동한 다음 최종 서버(S)로 SSH를 연결해야 하므로 이 작업을 수행하고 싶습니다 . 토큰이 연장된 기간 동안 유효할 수 있고 투명한 SSH 전달이 개발 설정을 단순화할 것이라는 점을 고려하여 저는 ssh 설정을 목표로 합니다 ProxyCommand
. 그러나 ssh ProxyCommand를 사용하려면 모든 키/토큰이 로컬 시스템(L)에 있어야 합니다.
현재 다음과 같이 ProxyCommand를 사용하고 있습니다.
ProxyCommand ssh gateway nc %h %p
이를 통해 (S)에 대한 연결을 설정할 수 있지만 인증이 완료되지 않습니다.
OpenSSH_7.3p1-hpn14v11, OpenSSL 1.0.2k 26 Jan 2017
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 1: Applying options for *
debug1: /home/user/.ssh/config line 10: Applying options for S
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Executing proxy command: exec ssh GW nc S -p 22
debug1: permanently_drop_suid: 1000
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.3p1-hpn14v11
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Remote is NON-HPN aware
debug1: Authenticating to S:22 as 'user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: AUTH STATE IS 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: REQUESTED ENC.NAME is '[email protected]'
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: REQUESTED ENC.NAME is '[email protected]'
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
GSSAPIAuthentication yes
내가 이해하는 한 Kerberos를 통해 인증을 강제하는 설정을 시도했습니다 .
답변1
토큰으로 사용할 파일을 지정할 수 있습니까?
아니요. SSH는 GSSAPI를 통해 표시되고 액세스할 수 있는 것과 동일한 티켓을 사용합니다 klist
.
Kerberos가 올바르게 설정된 시스템에서 TGT를 복사했습니다.
나는 이것이 작동하는 방식이 아니라고 생각합니다. 처음부터 시작하여 Kerberos를 올바르게 설정하십시오.
이를 통해 (S)에 대한 연결을 설정할 수 있지만 인증이 완료되지 않습니다.
이 로그에 따르면 인증이 시작되지도 않았습니다. 이것은 완전히 또 다른 문제인 키 교환에 달려 있습니다(Gssapi 키 교환을 수행하지 않는 한).