다양한 주제

scp에 대해(정의, 사용법, 비밀번호 없이 동작하도록 하는 방법)

patrick-star 2023. 7. 25. 01:25
728x90

scp

scp = OpenSSH Secure file copy

  • 네트워크를 통해 host 간의 파일을 복사한다.
  • 데이터 전송을 할 때 ssh 연결 위에서 SFTP 프로토콜을 사용한다. 로그인 세션을 통해서 동일한 인증과 보안을 제공한다.
  • 인증을 필요로 할 때 마다 비밀번호(password) 또는 암호(passphrase)를 요구한다.

사용법

  • 기본적인 문법

    scp [-옵션] 데이터를_가져올_경로 데이터를_저장할_경로

이때, 가져올 경로 또는 저장할 경로가 원격 PC에 있는 경로라면 아래의 형식으로 적어주면 된다.

user이름@ip주소(host주소):/원하는/파일/또는/디렉토리경로

로컬이라면? /원하는/파일/또는/디렉토리경로 만 적어주면 된다. 

ex) 로컬의 /home/usera/test 경로의 디렉토리원격지 /home/remotesuer/exp 디렉토리로 복사하고 싶다.

scp -r /home/usera/test 원격지user@192.168.0.12:/home/remotesuser/exp 

옵션 -r을 사용하면, 디렉토리 전체를 복사할 수 있다. 

ex) 원격지 /home/remotesuer/exp 디렉토리로컬의 /home/usera/test 경로의 디렉토리로 복사하고 싶다.

scp -r 원격지user@192.168.0.12:/home/remotesuser/exp /home/usera/test 

ex) 로컬에 있는 여러 개의 파일원격지 복사하고 싶다.

scp -r /home/usera/test.txt /home/usera/test22.txt 원격지user@192.168.0.12:/home/remotesuser/exp 

==> 2개의 파일을 원격지의 디렉토리에 저장 

파일 이름에 공백이 있다면 큰따옴표(")로 파일을 하나씩 둘러싼다. 
scp -r "tt est.txt "tt est22.txt" 원격지user@192.168.0.12:/home/remotesuser/exp 

ex) 원격지에 있는 여러 개의 파일로컬로 복사하고 싶다.

콜론(:) 뒤에 여러 개의 파일들을 큰따옴표로 감싸면 된다.

scp -r 원격지user@192.168.0.12:"/home/remotesuser/exp/111.txt /home/remotesuser/exp/222.txt" /home/usera/test 

파일이름에 공백이 있다면 해당 파일만 작은따옴표로 감싼다.
scp -r 원격지user@192.168.0.12:"'/home/remotesuser/exp/tt 111.txt' /home/remotesuser/exp/222.txt" /home/usera/test 

cf) 여기서는 r 옵션만 사용했지만 더 많은 옵션들이 존재한다. 필요한게 있다면 공식문서를 참조하도록 하자.

비밀번호 입력없이 사용하는 방법

반복적으로 파일 또는 디렉토리를 복사하거나 복사해올 때 마다 비밀번호를 입력해야 하는 과정 때문에 굉장히 귀찮은 경우가 발생할 수 있다. 이때, 아래와 같은 방법을 이용해서 비밀번호를 입력하지 않고 원격 컴퓨터에서 데이터를 가져오거나 원격 컴퓨터에 데이터를 저장할 수 있다.

scp를 정리하다 보니 rcp라는 방법을 이용하면 비밀번호를 입력하지 않고 데이터를 원격에서 복사할 수 있다고 한다.
아래 과정이 귀찮고 보안 문제에 신경쓰지 않아도 된다면 rcp를 사용하도록 하자.

관련 내용은 추후에 정리하도록 하자.

개요

내 로컬 PC : Windows & 서버 PC : ubuntu

기본적인 내용은 다음과 같다.

1) 내 로컬 PC에서 key를 하나 만든다.
2) 그렇게 만든 key를 파일, 디렉토리들을 주고 받고 싶은 서버 PC에 저장
3) 끝

① ssh-keygen 사용해서 key 생성

  • windows command에 ssh-keygen을 입력하면 아래와 같은 내용이 나타난다.

    Generating public/private rsa key pair.
    Enter file in which to save the key (C:\Users\PC/.ssh/id_rsa):
    ⇒ 말 그대로 key의 저장위치를 지정하는 질문. Enter를 누르면 해당 경로에 id_rsa, id_rsa.pub 파일이 생성

Enter passphrase (empty for no passphrase): ⇒ 원하는 암호를 설정. 암호를 설정하지 않을 거라서 그냥 Enter만 누름
Enter same passphrase again: ⇒ 암호 확인

② SSH로 접속할 서버에 Public Key 복사

내가 성공한 확실한 방법은 직접 Public Key를 복사해서 붙여넣는 방법이어서 그걸 정리하도록 하겠다.

1) 생성한 Public key를 복사


앞서 설정한 경로에 따라 C:\\Users\\PC/.ssh/id\_rsa.pub 파일의 내용을 복사한다.

cat, type을 사용하던가 직접 파일을 찾아서 ctrl+c를 하면 된다.

2) 서버 PC의 ~/.ssh 디렉토리에 authorized_keys 파일 생성(또는 덧붙임)


# home 디렉토리 아래에 .ssh 폴더 생성 (있다면 pass)

mkdir ~/.ssh

# .ssh 디렉토리의 permission을 700으로 설정

chomd 700 .ssh

# .ssh 디렉토리로 이동

cd .ssh

# authorized\_keys 파일 생성 (있다면 pass)

touch authorized\_keys

# authorized\_keys 파일의 permission을 600으로 설정

chmod 600 authorized\_keys

# authorized\_keys 파일에 저장했던 key를 입력

# vim을 이용해도 좋고 echo를 이용해도 상관없다.

# 해당 파일에 key값 내용만 들어가면 된다.

'다양한 주제' 카테고리의 다른 글

Windows 작업 스케줄러  (0) 2023.07.26
netstat에 대해  (0) 2023.07.25
crontab  (0) 2023.07.20
[Linux] 배포판, shell, 커널  (0) 2023.05.17
[Nginx] Nginx 도커에 설치하고 실행하기  (0) 2023.05.03