본문 바로가기

ComputerScience/Network

Connect linux server with SSH and learn SCP

728x90

macbook에서 원격 linux서버에 접속해서 파일 작성, 컴파일, 실행, 업로드, 내려받기, 복사 연습을 해보자. (윈도우라면 putty를 사용하면 된다.)

1. ssh접속

ssh -p 7722 nsl2.cau.ac.kr -l 20174089

or 

ssh -p 7722 20174089@nsl2.cau.ac.kr

7722번 포트로 해당 주소로 ssh접속을 시도한다. login id는 20174089이다.

신뢰할 수 있는 서버인지 물어본다 yes를 눌러주자.

linux서버에서 최초 로그인시 비밀번호 변경을 강제하고 있다.

변경이 완료되면 다시 접속하여 로그인을 해보자.

ssh 접속에 성공하였다.

2. linux 기본 명령어

vi hi.txt

hi.txt라는 파일을 만들어보자. vi에디터를 사용한다.

내용을 다 쳤으면 esc -> : -> wq -> enter 를 순서대로 쳐서 내용을 저장하고 vi를 종료한다.

참고로 저장하지 않고 그냥 종료는 q이다.

hi.txt파일이 생겼다.

hostname, pwd(현재 위치), ls, rm(파일 삭제) 명령어를 사용해봤다.

mkdir로 디렉토리를 만들고 이동해보았다. 만든 디렉토리는 rmdir로 삭제할 수 있다. 

cat 명령어로 파일의 내용물을 볼 수 있다.

ls -al 옵션을 주어 숨긴파일과 더불어 모든 파일 목록과 파일 정보들을 볼 수 있다.

find 명령어로 hello가 들어간 파일들을 전부 찾아보았다.

grep 명령어를 사용하여 모든 파일들을 대상으로 hello가 들어간 문장을 찾았다.

3. 소스 컴파일 및 실행

 

vi helloworld.c

helloworld.c를 작성하고 저장한다.

gcc -o helloword helloword.c

gcc 컴파일러로 해당 소스를 컴파일하고 실행파일을 만든다.

./helloword

프로그램을 실행한 결과가 보인다.

vi helloword.java

이번엔 자바 프로그램을 작성한다.

자바 소스를 컴파일, 실행 해보았다.

 

* python 프로그램의 경우 (스크립트 언어이기 때문에 컴파일이 필요없다)

python helloworld.py

*go 프로그램의 경우 (스크립트 언어이기 때문에 컴파일이 필요없다)

go run helloworld.go

4. 파일 send/receive

scp -P 7722 파일이름 아이디@서버주소:~/
 
// 현재 내 local 디렉토리에 있는 파일을 아이디@서버주소 root 폴더에 전송

scp -P 7722 -r 폴더이름 아이디@서버주소:~/

// 폴더를 옮기고 싶다면 -r을 사용한다.

scp -P 7722 hi.* nsl5.cau.ac.kr:~/

*아이디가 동일하기 때문에 {아이디}@{서버주소}꼴로 쓰지 않아도 되었다.

scp 프로토콜을 사용하여 nsl2에 있는 hi라는 이름의 파일들을 nsl5 리눅스 서버의 ~/(홈디렉터리)에 복사해주었다.

nsl5.cau.ac.kr의 접속 권한을 확인하는 질문이 떴다.

nsl5로 로그인해서 실제로 파일이 잘 왔는지 확인해보았다.

이번에는 복사를 해주는게 아니라 현재 로그인 되어있는 nsl5에서 nsl2에 있는 hi.txt를 복사를 해오자. 

scp -P 7722 nsl2.cau.ac.kr:~/hi.txt ./

*아이디가 동일하기 때문에 {아이디}@{서버주소}꼴로 쓰지 않아도 되었다.

5. ssh config

매번 -P 7722, nsl2.cau.ac.kr 을 치는게 번거로울 수 있다.

config파일을 만들어서 shorcut을 지정해줄 수 있다.

.ssh 폴더에 config 파일을 만든다.

config가 생성되었고 이제부터 nsl5에서는 ssh nsl2만 쳐도 로그인이 가능하다.

scp nsl2:~/hi.txt ./

scp에서도 이렇게 단축어를 사용하여 hi.txt를 nsl2에서 가져올수 있다.

scp .ssh/config nsl2:~/.ssh/

이 config 파일을 nsl2에게 보내줘서 nsl2에서도 typing을 아낄수 있도록 해주자.

nsl2에서 파일이 잘 도착했고 "ssh nsl5"만으로 단축 명령어가 잘 수행된다.

6. ssh-keygen

두 서버를 왔다갔다 하기가 한결 편해졌지만 여전히 비밀번호를 계속 쳐줘야 해서 번거롭다. 이를 해결해보자.

ssh-keygen -t rsa

 

위 명령어를 치고 .ssh폴더로 이동하면 id_rsa와 id_rsa.pub가 생성된 것을 확인할 수 있다.

id_rsa는 자신만 갖고 있어야 하는 private키이다. 

id_rsa.pub는 public키이다. 이 키를 nsl5에게 nsl2.pub라는 이름으로 바꿔서 보내주자.

scp .ssh/id_rsa.pub nsl5:~/.ssh/nsl2.pub

cp nsl2.pub authorized_keys

nsl5에 접속해서 전달받은 nsl2.pub키 authorized_keys라는 이름으로 복사해주자.

그럼 이제부터는 nsl2에서 nsl5로 접속할 때 비밀번호를 매번 쳐줄 필요가 없다.

nsl2에서 scp로 nsl5에게 파일을 보내고 가져올때도 비밀번호를 쳐줄 필요가 없다.

728x90
반응형

'ComputerScience > Network' 카테고리의 다른 글

Protocol layers, service models  (0) 2022.03.14
Delay, Loss, and Throughput in Packet-Switched Networks  (0) 2022.03.14
The Network Core  (0) 2022.03.09
Internet?, The Network Edge  (0) 2022.03.03
What happen if you access www.google.com?  (0) 2022.03.03