ZAGO.TO자고투 긴 글 보내기 →

블로그

ssh-copy-id 윈도우에서 안 될 때, ssh 공개키를 복사해 서버에 등록하는 법

2026-10-17

이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

서버에 비밀번호 없이 접속하고 싶어서 ssh-copy-id를 쳤는데, 윈도우 PowerShell은 그런 명령이 없다고 합니다. 리눅스와 맥에는 있지만 윈도우 기본 OpenSSH에는 빠져 있는 명령이라 그렇습니다.

명령이 없어도 하는 일은 단순합니다. 공개키 한 줄을 서버의 정해진 파일 끝에 붙이는 것뿐입니다. 그 한 줄을 어떻게 옮기는지 순서대로 보겠습니다.

목차

  1. 먼저 나눌 것, 공개키와 개인키
  2. 리눅스·맥은 ssh-copy-id 한 줄
  3. 윈도우는 PowerShell에서 직접 붙입니다
  4. 키를 손으로 붙여야 하는 자리
  5. 그래도 비밀번호를 물을 때

1. 먼저 나눌 것, 공개키와 개인키

노트북으로 서버에 접속하려는 장면

▲ 서버로 가는 것은 .pub 한 줄뿐입니다

ssh-keygen으로 키를 만들면 두 개가 생깁니다. `id_ed25519`는 개인키, 끝에 `.pub`이 붙은 `id_ed25519.pub`이 공개키입니다.

공개키는 남이 봐도 되는 한 줄이고, 개인키는 내 컴퓨터 밖으로 나가면 안 됩니다. 서버에 등록하는 것은 언제나 .pub 쪽입니다. 헷갈리면 파일을 열어 보세요. `ssh-ed25519`로 시작하는 한 줄이면 공개키, BEGIN으로 시작하는 여러 줄이면 개인키입니다.

키가 아직 없다면 `ssh-keygen -t ed25519` 한 줄로 만듭니다. 묻는 말에 Enter만 눌러도 기본 위치(홈 폴더의 .ssh)에 생깁니다.

2. 리눅스·맥은 ssh-copy-id 한 줄

`ssh-copy-id 사용자@서버주소`를 치고 서버 비밀번호를 한 번 넣으면 끝입니다. 공개키를 서버의 `~/.ssh/authorized_keys` 끝에 붙여 주고, 폴더가 없으면 만들어 줍니다.

3. 윈도우는 PowerShell에서 직접 붙입니다

윈도우에서 ssh 공개키 등록하는 순서

▲ 리눅스 명령이 하던 일을 한 줄로 풀어 쓴 것입니다

윈도우에서는 공개키 내용을 읽어 ssh로 서버에 흘려 넣으면 됩니다. PowerShell에서 아래 한 줄을 씁니다.

`type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh 사용자@서버주소 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"`

비밀번호를 한 번 묻고 나면 등록이 끝납니다. 꺾쇠 두 개(>>) 가 중요합니다. 하나만 쓰면 기존에 등록된 다른 키를 덮어써 버립니다.

4. 키를 손으로 붙여야 하는 자리

클라우드 콘솔의 SSH 키 칸이나 깃허브 설정처럼, 명령이 아니라 웹 화면에 공개키를 붙여야 하는 경우도 많습니다. 이때는 공개키를 클립보드로 복사합니다.

붙일 때는 한 줄이 그대로 들어가야 합니다. 메모장이나 메신저를 거치며 중간에 줄이 바뀌면 서버가 키로 읽지 못합니다. 터미널에서 복사가 꼬이는 문제는 리눅스 복사 붙여넣기, 터미널에서 Ctrl+C를 누르면 명령이 멈추는 까닭에 따로 적었습니다.

키를 만든 노트북과 콘솔을 연 PC가 다른 기계라면, 그 한 줄을 넘길 길이 필요합니다. 공개키는 남이 봐도 되는 문자열이라 자고투(ZAGO.TO)에 붙여 숫자 4개로 넘겨도 됩니다. 열지 않으면 1분, 연 뒤 1분이 지나면 지워지고 다시 열 수 없으며, 서버가 글을 읽을 수 있으니 개인키는 이 방법으로도 절대 옮기지 마세요.

5. 그래도 비밀번호를 물을 때

ssh 공개키 접속이 안 될 때 볼 곳

▲ 대부분은 서버 쪽 권한 문제입니다

등록했는데도 접속할 때 비밀번호를 묻는다면 서버의 권한을 먼저 보세요. `~/.ssh` 폴더는 700, `authorized_keys`는 600이어야 합니다. 너무 열려 있으면 SSH가 일부러 키를 무시합니다.

홈 폴더 자체의 쓰기 권한이 다른 사람에게 열려 있어도 같은 일이 생깁니다. 접속할 때 `ssh -v 사용자@서버주소`로 자세한 기록을 보면 어느 키를 시도했고 왜 거절됐는지 나옵니다.

정리하면

윈도우에 그 명령이 없어도 공개키 한 줄을 authorized_keys 끝에 붙이면 같은 결과입니다. 옮기는 것은 .pub 한 줄, 내 컴퓨터에 남는 것은 개인키입니다.