원격 서버에 대한 SSH 액세스를 다시 얻는 방법

원격 서버에 대한 SSH 액세스를 다시 얻는 방법

저는 VirtualBox에서 Linux Terminal을 사용하여 웹사이트 작업을 하고 있었는데 비밀번호 인증 없이 원격 서버에 대한 보안 액세스를 할 수 있었습니다. 내가 입력해야 했던 것은 "ssh {sudo user}@{IP}"뿐이었습니다. 파이프라인이 끊어진 후 다시 연결할 수 없게 되었습니다.

방화벽 관련 문제라고 생각하여 단계를 다시 추적했습니다(이 튜토리얼을 따르고 있으므로 쉬웠습니다.https://www.youtube.com/watch?v=goToXTC96Co&t=318s). 그렇게 해보니 SSH 액세스를 활성화하기 전에 허용한 것을 보니 방화벽 때문에 발생하는 것은 아닌 것 같습니다.

키 관련 문제라고 생각한 후 새 키 쌍을 생성하고(실수로 이전 쌍을 덮어씀) 생성된 공개 키를 서버에 안전하게 복사하려고 시도했지만 작동하지 않았습니다. 내 서버의 공개 키에 대한 개인 키를 덮어쓰는 바람에 망가졌을 수도 있지만 이 분야가 처음이라 내가 모르는 다른 해결책이 있을 수도 있습니다. 티이것은 내가 지금 얻고 있는 출력입니다(디버그 정보 포함).

root@john-VirtualBox:/home/john# ssh [email protected] -v


OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017 

 - debug1: Reading configuration data /etc/ssh/ssh_config
 - debug1: /etc/ssh/ssh_config line 19: Applying options for *
 - debug1: Connecting to xxx.xxx.xx.xxx [xxx.xxx.xx.xxx] port 22.
 - debug1: Connection established.
 - debug1: permanently_set_uid: 0/0
 - debug1: identity file /root/.ssh/id_rsa type 0
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_rsa-cert type -1
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_dsa type -1
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_dsa-cert type -1
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_ecdsa type -1
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_ecdsa-cert type -1
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_ed25519 type -1
 - debug1: key_load_public: No such file or directory
 - debug1: identity file /root/.ssh/id_ed25519-cert type -1
 - debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
 - debug1: Remote protocol version 2.0, remote software version
   OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
 - debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat
   0x04000000
 - debug1: Authenticating to xxx.xxx.xx.xxx:22 as 'jw'
 - debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received
 - debug1: kex: algorithm: curve25519-sha256
 - debug1: kex: host key
 - algorithm: rsa-sha2-512
 - debug1: kex: server->client cipher:[email protected] MAC
   <implicit> compression: none
 - debug1: kex: client->server cipher: [email protected]
   MAC: <implicit> compression: none
 - debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
 - debug1: Server host key: ssh-rsa SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 - debug1: Host 'xxx.xxx.xx.xxx' is known and matches the RSA host key.
 - debug1: Found key in /root/.ssh/known_hosts:4
 - debug1: rekey after 134217728 blocks
 - debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS
 - debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 134217728 blocks 
 - 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>
 - debug1: SSH2_MSG_SERVICE_ACCEPT received
 - debug1: Authentications that can continue: publickey
 - debug1: Next authentication method: publickey
 - debug1: Offering public key: RSA   
   SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /root/.ssh/id_rsa
 - debug1: Authentications that can continue: publickey
 - debug1: Trying private key: /root/.ssh/id_dsa
 - debug1: Trying private key: /root/.ssh/id_ecdsa
 - debug1: Trying private key: /root/.ssh/id_ed25519
 - debug1: No more authentication methods to try.

내가 받은 오류 출력은 다음과 같습니다(디버그 정보 없음).

[email protected]: Permission denied (publickey)

/etc/ssh/sshd_config는 문제 이전에 설정을 변경했습니다.

  • PermitRootLogin 아니요(해커가 루트 액세스 권한을 얻지 못하도록 방지)
  • PasswordAuthentication no(매번 비밀번호를 입력하지 않고도 ssh를 허용하기 위해)

관련 정보