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 |