1. svr1 퍼블릭접속
ssh -i 키페어이름.확장자 유저명@퍼블릭ip주소
2. svr1 접속 후 svr2 프라이빗접속
ssh -i 키페어명 유저명@svr2프라이빗주소
3. ping 테스트
ping ip주소 (시작)
Ctrl + C (멈춤)
퍼블릭ip : 중복이 없는 유일한 ip, 접속할 수 있음.
프라이빗ip : 중복될 수 있음. 프라이빗ip로 접근할 수 없음. 내부에서만 사용이 가능함.
- svr2로 접속했을 때, 밖으로 내보낼때 프라이빗ip로 나가는 것이 아니라 svr1의 퍼블릭Ip로 내보낼 수 있음.
- 프라이빗ip를 쓸 수 있도록 설정을 할 수 있긴 함.
- EC2에서 svr2 네트워킹을 누르면 서브넷 Id 확인 가능(private으로 써있음)
- 서브넷 ID(subnet-0e548e7a20f18e4b0 (gdj73-private-subnet)
- 바꿔나갈 수 있는 퍼블릭ip가 필요함 -> NAT 게이트 웨이 생성
NAT 게이트웨이가 뭘까? 프라이빗 서브넷의 EC2들이 외부 통신(인터넷) 가능하도록 하는 서비스이다.
생성 방법
- 이름 : 설정
- 위치 : 퍼블릭 서브넷으로 설정
- 탄력적 ip 할당 선택 : 고정 ip -> 비용이 더 듦.
- 생성 후 게이트웨이 목록에서 기본퍼블릭ip 확인가능(고정 ip임) 57.181.124.108
- 이렇게 게이트웨이 설정하게 되면, 프라이빗 서브넷에서 탄력적 ip로 바꿔서 외부와 소통할 수 있게 됨.
이게 뭐지? 네트워크상의 특정 목적지까지의 거리와 가는 방법등을 명시하고 있는 테이블을 말한다.
서브넷 Id 클릭 -> 아래 라우팅 테이블 클릭 -> 라우팅 테이블 연결 편집 -> 디폴트 라우팅 추가
- 대상 : 0.0.0.0.0 -> 누구나 연결해준다.
- 대상 : 생성한 NAT 게이트웨이 선택
이렇게 설정된 뒤 svr2에서 ping 1.1.1.1(아무 ip)을 하는 경우, ping이 되는 것을 확인할 수 있따.
# sudo amazon-linux-extras install docker
# sudo service docker start
# sudo usermod -a -G docker ec2-user
# exit
# 재접속
ssh -i 키페어명 ec2-user@svr2프라이빗주소
# 다운로드 및 컨테이너 실행
docker container run -d \
--name=mysqldb \
--restart=always \
-e MYSQL_ROOT_PASSWORD=education \
-e MYSQL_DATABASE=guestbook \
-p 3306:3306 \
yu3papa/mysql_hangul:2.0
이런 과정을 다 거치고 나면?
svr2에 db를 생성해두고, svr1을 통해 접속하며, 인터넷을 사용할 수 있는 설정이 완료된다.
컨테이너를 쓰는 목적?
도커 컨테이너는 경량의 형태이고, 나머지는 공유하고 있어서 같은 환경을 빠르게 구축할 수 있음.(환경을 이미지처럼 두었다가 사용할 수 있는 거라고 생각하면 됨)
원격에서 명령을 수행할 수 있는 서비스로 송수신되는 데이터 암호화됨.
기본적으로 TCP 22번 사용
패키지 : openssh (open : 공개된 소스로 서버 프로그램/클라이언트 프로그램)
sudo apt install openssh-server
sudo dnf install openssh-server
ssh-keygen -t rsa -b 2048
저장위치/저장파일명
/home/ubuntu/.ssh/lyr_keypair2
passphrase를 설정할 수 있음. => SSH키를 보호하기 위한 비밀번호
ubuntu@ip-172-31-40-130:~/guestbook$ cd
ubuntu@ip-172-31-40-130:~$ ls
__MACOSX guestbook guestbook.zip ljy_keypair.pem
ubuntu@ip-172-31-40-130:~$ ls .ssh
authorized_keys known_hosts
ubuntu@ip-172-31-40-130:~$ cd .ssh
ubuntu@ip-172-31-40-130:~/.ssh$ cat authorized_keys
ssh-rsa 키내용 키이름
SSH는 SSH 키를 이용해서 세션키(대칭키, 비밀키) 교환하고, 교환된 세션키를 이용해서 사용자 데이터를 암복호화함.
(참고 : https://spidyweb.tistory.com/310)
SSH 접속
1.패스워드 인증
ssh 사용자id@서버ip주소
pasward:
2.공개키 인증
ssh -i 개인키 사용자Id@서버ip주소
1.클라이언트에서 서버로 복사하기
scp -i 개인키 복사할파일명 파일명 사용자id@서버ip주소:/복사할 위치
2.서버에서 클라이언트로 복사하기
scp -i 개인키 사용자id@서버ip주소:/복사할 파일 위치/파일명 복사될위치
ssh-copy-id 공개키 사용자id@서버ip
//경로 이동
cd ~/.ssh
//PasswordAthenitication yes로 수정하고 저장
sudo vi /etc/ssh/sshd_config
//비번 설정
sudo passwd ubuntu(유저이름)
Changing password for user ec2-user.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
//시스템 재시작 -> 비번적용
sudo systemctl restart sshd
//키없이 로그인 시 패스워드 입력칸이 나오게 됨
원래 방식
ssh -i 키페어이름.확장자 유저명@퍼블릭ip주소
패스워드 인증 방식
ssh 유저명@퍼블릭ip주소
password :
ssh ec2-user@172.31.78.46
password:
1.서버이름 바꾸기
sudo hostnamectl set-hostname was-server(svr1)
sudo hostnamectl set-hostname db-server(svr2)
sudo hostnamectl set-hostname was-server2(svr1)
2.키만들기 & 위치 및 이름 지정
ssh-keygen -t rsa -b 2048
/home/ubuntu/.ssh/ljy_keypair2
3.확인하기
cd .ssh
ubuntu@was-server:~/.ssh$ ls
4.새로만든 공개키 svr2에 복사하기
ssh-copy-id -i 복사할파일.확장자 복사해갈유저명@복사해갈프라이빗주소
<scp 이용한 파일복사>
1.클라이언트에서 서버로 복사하기
scp -i 개인키 복사할파일명 유저명@db서버주소:복사할위치
scp -i kyt_keypair.pem testfile ubuntu@서버IP주소:/home/ubuntu
2.서버에서 클라이언트로 복사하기
scp -i 개인키 유저명@db서버주소:복사할파일위치/파일명 복사될위치
<공개키를 원하는 서버에 복사하기>
ssh-copy-id 공개키
트래픽이 몰릴 때 나눠서 분산해주는 역할을 해줄 수 있음.
현재 svr1, svr2는 같은 내용을 공유하도록 설계해 두었음.
svr3 서버 접속하여 was-server2로 이름 변경
was-server2에 guestbook 애플리케이션 서버 실행
DB서버는 기존 프라이빗 서브넷의 db-server 실행
웹 브라우저에서 was-server2의 공인 Ip 접속시 방명록 페이지 출력
openjdk설치, 게스트북 올리기까지 다만, DB ip는 svr2와 같은 것으로 바꿔주기???
//자바설치
sudo apt install openjdk-8-jdk
//svr1의 guestvook파일 복사
scp -i ljy_keypair.pem guestbook.zip ubuntu@3.18.183.98.148:home/ubuntu
//unzip 설치
sudo apt install unzip
//guestbook 압축풀기
unzip guestbook.zip
//경로이동 및 환경설정 수정
vi application.properties
ip 수정 - svr2 프라이빗주소 & 비번 수정 education
//메이븐 배포 환경설정
chmod u+x mvnw mvnw.cmd
//Maven/target Clean 및 build 실행
./mvnw clean package
cd target
sudo java -jar guestbook-0.0.1-SNAPSHOT.jar
nslookup ljy-loadbalancer-1274835263.ap-northeast-1.elb.amazonaws.com/
Server: 1.1.1.1
Address: 1.1.1.1#53
여기서 DNS?
긴 주소 대신에 이름을 사용할 수 있도록 지원해 줌.
//id 조회 및
id
cat/ect passwd //ubuntu접속 확인 가능?
리눅스를 깔아서 사용하는게 아니라면 우분투는 일반사용자로 로그인됨.
//유저생성
sudo useradd user1
sudo passwd user1
//유저변경
su - user1
비번 입력하면 유저변경됨
//경로 이동 및 파일목록 자세히 보기
$ cd /home/ubuntu
$ ls
__MACOSX guestbook guestbook.zip ljy_keypair.pem
$ ls -l //자세히 보기(사용자 권한 확인 가능0명령어 확인)
total 248
drwxrwxr-x 2 ubuntu ubuntu 4096 Jan 9 03:53 __MACOSX
drwxr-xr-x 5 ubuntu ubuntu 4096 Jan 10 06:10 guestbook
-rw-r--r-- 1 ubuntu ubuntu 237681 Jan 9 01:52 guestbook.zip
-r-------- 1 ubuntu ubuntu 1678 Jan 9 07:54 ljy_keypair.pem
//user1의 경우 권한이 없음.아래처럼 키파일을 읽을 수 있는 권한이 없음
//도커 사용자로 추가 & 확인
$ sudo usermod -aGG docker user1
ubuntu@was-server:~$ id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1),998(docker)
//루트로 이동하기
ubuntu@was-server:~$ sudo -i
root@was-server:~# //# : root
//파일복사하기(파일이 있는 경로에서)
cp guestbook.zip /tmp //root에 tmp 폴더 만들어서 복사하기
cp guestbook.zip tmp //현위치에 tmp 이름으로 복사됨
//현 위치에서 다른 경로의 목록 확인할 때
ls /tmp //검색하고자 하는 경로넣기(절대)
ls ../../tmp //(상대)
//옮기기
mv guestbook /tmp/gb
//mv 파일명/옮길 디렉토리/변경파일명
//다시 옮겨오기
mv /tmp/gb ./guestbook
// 경로및파일명 현위치/변경파일명
안녕하세요 구디아카데미를 수강할까 고민중인 학생인데 혹시 구디아카데미 수업방식이나 환경은 어떤편인지 바로 취업활동을 할 수 있을정도의 실력을 키울수있는지가 궁금합니다