두 가지 시스템이 있습니다
system-Laptop
개인 MacOS 노트북은 소유 사용자 로 알려져 있습니다laptopuser
. "NAT"가 없습니다.서버 리눅스는 누구나 접속할 수
system-Server
있는 고정 IP를 가진 사용자 라고 합니다 .serveruser
system-Server
"NAT" 없이 동적 IP를 얻으 ssh
려면 명령을 보내야 합니다 .system-Laptop
reverse SSH tunnel
system-Laptop
제가 설정한 방법은 다음 ssh-keys
과 같습니다.reverse SSH
1단계: laptopuser
on에 대한 키 쌍을 생성 system-Laptop
하고 공개 키 id_rsa.pub를 self ~/.ssh/authorized_keys
와 on에 system-Server
복사 합니다.<serveruserhomedir>/.ssh/authorized_keys
2 단계:
serveruser
on에 대한 키 쌍을 생성하고 system-Server
공개 키 id_rsa.pub를 self에 복사한 ~/.ssh/authorized_keys
다음 on에 복사합니다 system-Laptop
.<laptopuserhomedir>/.ssh/authorized_keys
참고: 이 명령을 성공적으로 테스트할 수 있습니다 system-Laptop
->ssh serveruser@system-Server
3단계:
system-Laptop
SSH 터널을 보존하려면 다음 명령을 실행하십시오 .
ssh -N -R 3322:localhost:22 serveruser@system-Server
4단계:
다음 명령을 실행하여 Linux 서버에서 내 노트북에 연결하세요.
ssh -p 3322 laptopuser@localhost
문제는 위의 명령이 비밀번호를 묻는 메시지를 표시한다는 것입니다. laptopuser
비밀번호를 제공하면 작동합니다.
SSH 키를 사용하여 위 작업을 비밀번호 없이 수행하려면 어떻게 해야 합니까? 내가 놓친 게 무엇입니까? [reverse-ssh]는 이번이 처음이라 잘 모르겠습니다.
다음은 4단계 ssh 명령의 디버그 출력입니다.
ssh -p 3322 laptopuser@localhost
.......
.......
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug2: key: /home/serveruser/.ssh/id_rsa (0x56539b783370)
debug2: key: /home/serveruser/.ssh/id_dsa ((nil))
debug2: key: /home/serveruser/.ssh/id_ecdsa ((nil))
debug2: key: /home/serveruser/.ssh/id_ed25519 ((nil))
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/serveruser/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/serveruser/.ssh/id_dsa
debug3: no such identity: /home/serveruser/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/serveruser/.ssh/id_ecdsa
debug3: no such identity: /home/serveruser/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/serveruser/.ssh/id_ed25519
debug3: no such identity: /home/serveruser/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup keyboard-interactive
debug3: remaining preferred: password
debug3: authmethod_is_enabled keyboard-interactive
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug3: send packet: type 50
debug2: we sent a keyboard-interactive packet, wait for reply
debug3: receive packet: type 60
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1
Password:
[serveruser@system-Server ~]$ ls -ltr /home/serveruser/.ssh/id_rsa
-rw------- 1 serveruser serveruser 3243 Jan 15 21:01 /home/serveruser/.ssh/id_rsa
답변1
첫째, SSH 키를 복사하는 가장 쉬운 방법은 다음을 사용하는 것입니다.SSH 복사 ID주문하다. 두 사용자 모두에 대해 이 작업을 수행합니다.
둘째, 역방향 터널을 생성하려면 다음 명령을 사용합니다(노트북에서 실행).
ssh -fnN -R 3322:localhost:22 serveruser@system-server
마지막으로 터널 서비스에 연결합니다. 이전에 ssh-copy-id가 완료된 경우 비밀번호를 묻지 않습니다. 시스템 서버에서 다음 명령을 실행하여 원격 Linux 서버에서 노트북으로 새 SSH 세션을 시작합니다.
ssh -p 3322 laptopuser@localhost