Linux / 명령어 / ssh-copy-id - SSH 공개키를 원격 계정에 등록

ssh-copy-id는 로컬 SSH 공개키를 원격 계정의 authorized_keys에 추가해 공개키 로그인을 준비합니다. 개인키를 서버로 복사하는 명령이 아닙니다.

ssh-copy-id 명령어란?

먼저 암호 로그인이나 다른 인증 방식으로 대상 계정에 접속할 수 있어야 합니다. -i로 등록할 공개키 파일을 지정하면 여러 로컬 키 중 잘못된 키를 선택할 가능성이 줄어듭니다. 도구는 등록 여부를 확인하려고 SSH 접속을 시도하며, 서버 정책에 따라 동작이 달라질 수 있습니다.

기본 문법

ssh-copy-id [옵션] [사용자@]호스트

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man ssh-copy-id으로 현재 시스템의 설명을 확인하세요.

사용 예제

등록할 공개키 확인

파일 끝의 .pub를 확인하고 지문도 검토합니다.

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

실제 등록 전 미리 보기

지원되는 구현에서 복사할 키를 확인합니다. 원격 변경은 하지 않습니다.

ssh-copy-id -n -i ~/.ssh/id_ed25519_work.pub alice@server.example.com

공개키 등록

원격 호스트 키를 검증한 뒤 해당 계정에 공개키를 추가합니다.

ssh-copy-id -i ~/.ssh/id_ed25519_work.pub alice@server.example.com

공개키 등록 뒤 확인하기

ssh-copy-id는 로컬 공개키를 원격 계정의 허용 키 목록에 추가합니다. 원격 계정에 먼저 접속할 수 있고 해당 계정의 권한이 있어야 합니다.

ssh-copy-id -i ~/.ssh/id_ed25519_work.pub user@server.example.test

등록에 성공했을 때 나타날 수 있는 출력:

Number of key(s) added: 1

등록 뒤 ssh -i ~/.ssh/id_ed25519_work user@server.example.test로 실제 공개키 인증이 작동하는지 확인하세요. 성공 메시지만으로 암호 로그인을 비활성화해도 안전하다고 판단하지 마세요. 다른 관리자 계정과 비상 접속 경로도 먼저 확인해야 합니다.

주요 옵션과 형식

옵션·형식 설명
-i 공개키파일 등록할 공개키를 명시적으로 선택합니다.
-n 실제 등록 없이 수행할 작업을 표시합니다.
-p 포트 원격 SSH 서버 포트를 지정합니다.
-s 지원되는 구현에서 SFTP 전송 방식을 사용합니다.
-f 이미 등록된 키 검사 없이 강제로 추가할 수 있어 중복에 주의합니다.

사용할 때 주의할 점

호스트 키 경고를 무시하고 진행하지 마세요. 등록 후 새 터미널에서 ssh -i ~/.ssh/id_ed25519_work alice@server.example.com으로 로그인되는지 확인하기 전에는 기존 암호 인증을 끄지 않습니다. 등록된 공개키를 제거하려면 원격 계정의 ~/.ssh/authorized_keys에서 정확한 한 줄만 백업 후 삭제해야 하며 다른 키는 보존하세요.

자주 묻는 질문

ssh-copy-id 실행 후에도 암호를 묻는 이유는?

첫 등록에는 기존 인증이 필요할 수 있습니다. 등록 후에도 계속 묻는다면 선택한 개인키, 서버의 authorized_keys 권한과 SSH 서버 설정을 확인하세요.

공식 문서

옵션의 정확한 동작과 구현별 차이는 ssh-copy-id 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / alias - 명령어 별칭 만들기

Linux / 명령어 / alias - 명령어 별칭 만들기

Bash alias 명령어로 자주 쓰는 명령과 옵션 조합에 짧은 별칭을 만드는 방법을 설명합니다. 별칭 저장, 우회, 함수와의 차이 및 확장되지 않는 경우도 정리합니다.

Linux / 명령어 / stat - 파일 정보와 메타데이터 확인

Linux / 명령어 / stat - 파일 정보와 메타데이터 확인

Linux stat 명령어로 파일 크기, 권한, 소유자, inode와 타임스탬프를 확인하는 방법을 설명합니다. atime·mtime·ctime·Birth의 차이와 출력 형식, 파일 시스템 조회법도 정리합니다.

Linux / 명령어 / parted - 파티션 표와 빈 공간 확인·관리

Linux / 명령어 / parted - 파티션 표와 빈 공간 확인·관리

Linux parted 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / ssh - 암호화된 원격 접속과 명령 실행

Linux / 명령어 / ssh - 암호화된 원격 접속과 명령 실행

Linux ssh 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / split - 큰 파일을 크기·행 수별로 분할

Linux / 명령어 / split - 큰 파일을 크기·행 수별로 분할

Linux split 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / wc - 줄·단어·문자 수 계산

Linux / 명령어 / wc - 줄·단어·문자 수 계산

Linux wc 명령어로 줄·단어·바이트·문자 수를 확인하는 방법을 설명합니다. 개행 기준의 줄 수, -c와 -m 차이, 여러 파일 합계와 안전한 파이프 활용 예제를 정리합니다.

Linux / 명령어 / join - 공통 필드로 두 파일 결합

Linux / 명령어 / join - 공통 필드로 두 파일 결합

Linux join 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / shred - 파일 데이터 덮어쓰기

Linux / 명령어 / shred - 파일 데이터 덮어쓰기

Linux shred 명령어로 파일이나 장치의 데이터를 덮어쓰는 방법과 한계를 설명합니다. SSD, 저널링·복사 방식 파일 시스템, 스냅샷 환경에서 완전 삭제를 보장할 수 없는 이유도 알아봅니다.

Linux / 명령어 / help - 셸 내장 명령어 도움말 확인

Linux / 명령어 / help - 셸 내장 명령어 도움말 확인

Bash help 명령어로 셸 내장 명령과 문법의 도움말을 확인하는 방법을 설명합니다. 출력 형식, 패턴 검색, type·man·--help와의 차이 및 스크립트 활용법을 정리합니다.

Linux / 명령어 / modinfo - 커널 모듈의 설명과 매개변수 확인

Linux / 명령어 / modinfo - 커널 모듈의 설명과 매개변수 확인

Linux modinfo 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.