Linux와 커맨드 라인 기초

자신의 PC에서 ssh-keygen을 사용하여 공개 키 인증용 키 쌍을 만들고, 서버 server1에 비밀번호 없이 ssh로 접속할 수 있게 하고 싶다. 키를 두는 방법으로 올바른 것은?

  1. A개인 키를 서버의 ~/.ssh/authorized_keys에 추가하고, 공개 키는 자신의 PC에만 둔다
  2. B공개 키와 개인 키를 모두 서버의 ~/.ssh에 두고, 자신의 PC에는 아무것도 남기지 않는다
  3. C공개 키를 서버의 ~/.ssh/authorized_keys에 추가하고, 개인 키는 자신의 PC 밖으로 내보내지 않는다
정답과 해설 보기

정답: C. 공개 키를 서버의 ~/.ssh/authorized_keys에 추가하고, 개인 키는 자신의 PC 밖으로 내보내지 않는다

SSH의 공개 키 인증에서는 서버가 authorized_keys에 등록된 공개 키를 사용하여, 접속해 온 쪽이 그에 대응하는 개인 키를 가지고 있음을 확인합니다. 개인 키 자체는 보내지지 않으므로, 개인 키는 자신의 PC에만 두고 다른 사람이 읽지 못하도록 권한을 600 등으로 하며, 패스프레이즈로 보호해 둡니다. 공개 키(~/.ssh/id_ed25519.pub 같은 .pub 파일)는 알려져도 문제가 없으며, ssh-copy-id를 사용하면 서버의 authorized_keys에 추가할 수 있습니다. 같은 키는 ssh 위에서 동작하는 scp나 rsync로 파일을 전송할 때에도 사용됩니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 'tar -czf proj.tar.gz proj/'를 실행했을 때의 동작으로 올바른 것은?
  2. Git으로 관리하고 있는 파일 main.c를 편집한 후 'git commit -m "fix"'만 실행했더니, 'no changes added to commit'이라고 표시되고 커밋되지 않았다. 이유로 올바른 것은?
  3. Git에서 git commit을 실행했지만, 팀에서 공유하고 있는 GitHub 저장소에는 그 커밋이 아직 표시되지 않는다. 이유로 올바른 것은?
  4. Git으로 관리하고 있는 프로젝트의 .gitignore에 'build/'라고 썼지만, 이전에 커밋한 build/out.log의 변경이 git status에 계속 표시된다. 이유로 올바른 것은?
  5. Linux의 표준적인 디렉터리와 그곳에 놓이는 것의 조합으로 올바른 것은?