fish 설치 및 구성하기(centos7)



yum install fish -y
fish
fish –version (또는 echo $version)
echo $status

curl http://ifconfig.io
curl 우측방향키를 사용하여 명령어 완성하기(auto completion)

<최신 git 설치>
yum install git -y
git –version
rpm -Uvh http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
yum repolist
yum update git -y
git –version


curl -L https://get.oh-my.fish | fish (또는 curl -L git.io/omf | sh 로 omf 설치)
프롬프트가 fish로 변경됨

omf help

Google에서 oh-my-fish github 검색
https://github.com/oh-my-fish/oh-my-fish/blob/master/docs/Themes.md
여기에는 다양한 Theme이 있다. 그중에 하나가 ocean과 bira이다

omf intall ocean
chsh -s /usr/bin/fish (Default shell을 fish로 변경)

docker에서 “–entrypoint 명령어” 사용하기


–entrypoint라는 옵션은 container에서 강제로 실행하는 명령(echo, htpasswd)으로서 그 결과를 도커 호스트에 적용 및 저장할 수 있다
이것을 일회성 작업으로 활용할 때 유용하다(생성되어 실행된 container는 작업 후에 곧장 중지된다)
script를 실행하여 작업할 때도 유용하다

docker run –entrypoint echo centos hi > /root/hello.txt
cat /root/hello.txt

docker run –entrypoint htpasswd httpd -Bbn peace password > /root/htpasswd
cat /root/htpasswd
(다음 명령어와 동일하다
docker run httpd htpasswd -Bbn peace password > /root/htpasswd1 )

docker run –entrypoint ping centos 8.8.8.8

.new 도메인 목록


참고: https://whats.new/shortcuts/

** 반드시 Login을 한 후에 서비스를 이용할 수 있다**
Google Docs: doc.new
Google Slides: slide.new
Google Sheet: sheet.new
Google Meet: meet.new
Google Calendar: cal.new
Google Forms: form.new
Google Keep: keep.new
Jamboard with Google: jam.new

Microsoft PowerPoint: ppt.new
Microsoft Word: word.new
Microsoft Excel: excel.new
Microsoft Teams: teams.new

Convert to PDF: pdf.new

Webex meeting: webex.new

Online quiz using Kahoot: quiz.new

Use a proxy server without having to connect to a VPN: vpn.new


화상회의 프로그램 정리

ZOOM: zoom.us
Teams: teams.new
WebEx: webex.new
Meet: meet.new

SSH Tunnel을 통한 mysql server에 접속하기


참고1: https://www.rosehosting.com/blog/access-your-database-remotely-through-an-ssh-tunnel/

참고2: https://bit.ly/3JUY46T

이것은 FTP Server에 접속할 때 SFTP로 접속하는 것과 동일하다. 즉, 원래 21번 포트로 접속하지 않고 22번 포트로 접속하여 FTP의 취약한 보안성을 해결할 있다.

그렇듯이 mysql DB server에 접속할 때도 3306 포트로 접속하지 않고 SSH Tunnel을 만들어서 접속하면 22번 포트로 접속하여 훨씬 보안성을 높일 수 있다

FTP Server나 mysql Server가 Linux에서 실행중이면 이 방법을 사용하여 접속하는 것이 유리하다

==============

-mysql Server가 설치된 ansible(172.30.1.60)-
yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server
systemctl start mysqld –now

netstat -nltup
netstat -an | grep ESTABLISHED

yum install mysql -y (##mysql client 설치)

cat /var/log/mysqld.log | grep ‘temporary password’ (##임시 암호를 복사한다)
mysql -u root -p
복사한 암호를 붙여 넣는다

root 계정에 대한 암호를 변경한다
alter user ‘root’@’localhost’ identified by ‘P@ssw0rd’;
commit;

mysql -u root -p (##바뀐 암호로 로그인 하여 본다)
exit

mysql Client(node1)가 접속한 후 다시 아래 명령어를 입력한다
netstat -an | grep ESTABLISHED

===============================

-mysql Client가 설치된 node1(172.30.1.22)-

yum install mysql -y
netstat -an | grep ESTABLISHED
ssh -fNg -L 3306:127.0.0.1:3306 root@172.30.1.60

포트 포워딩: -L local_port:localhost:remote_port

man ssh | grep \-f

man ssh | grep \-N

man ssh | grep \-g

netstat -an | grep ESTABLISHED ##22번 포트로 하나 더 연결되었다는 것을 확인
mysql -h 127.0.0.1 -P 3306 -u root -p ##원격(172.30.1.60) 서버에서 실행 중인 mysql server에 접속함
show databases;

다른 세션으로 node1에 접속하여 아래 작업을 하여 어떻게 세션이 연결되었는지 확인한다
netstat -an | grep ESTABLISHED

Windows 컴퓨터에서 Azure Kubernetes Service(AKS)에 접속하여 Container 실행하기


AKS를 이용하면 Load Balancer에서 공인 IP를 쉽게 받을 수 있다
Windows 10/11에 wsl2를 설치한 후 docker desktop을 설치해 두어야 한다.
이렇게 하면 kubectl 클라이언트 프로그램을 사용할 수 있다

az login
cd c:\terraform\lab\aks

-Terraform으로 AKS 설치하기-
terraform init
terraform plan
terraform apply –auto-approve

-kubectl을 실행하기 위해 config 파일 복사하기-
az group list -o table
az aks list -g aks_tf_rg -o table
az aks get-credentials -n devops-coach-aks -g aks_tf_rg
kubectl get nodes -o wide

-Linux Image-
kubectl create deployment mynginx –image nginx –port 80
kubectl expose deployment mynginx –port 80 –type LoadBalancer

kubectl create deployment mymario –image pengbai/docker-supermario –port 8080
kubectl expose deployment mymario –port 8080 –type LoadBalancer

kubectl create deployment myaspnetapp –image mcr.microsoft.com/dotnet/samples:aspnetapp –port 80
kubectl expose deployment myaspnetapp –port 80 –type LoadBalancer

kubectl get service -o wide
공인 IP Address를 가진 두 웹싸이트에 Chrome으로 접속하여 내용 확인하기

terraform destroy –auto-approve

Windows 컴퓨터에서 Azure Container Instance에 접속하여 Container 실행하기


Azure를 이용하면 Container에 공인 IP를 받을 수 있다

az login

-Linux Image-
az container create -n mynginx -g testRG –image library/nginx –ip-address public –ports 80
az container create -n mymario -g testRG –image pengbai/docker-supermario –ip-address public –ports 8080
az container list -o table
az container exec -n mymario -g testRG –exec-command “/bin/bash”
az container create -n myaspnetapp -g testRG –image mcr.microsoft.com/dotnet/samples:aspnetapp –ip-address public
공인 IP Address를 가진 두 웹싸이트에 Chrome으로 접속하여 내용 확인하기

az group delete -n testRG

엔지니어가 알아야 할 기본 내용


  1. 인증
  • password
  • key(Cloud VM에서는 Key 인증 방식을 기본적으로 취하는데 Private Key를 다운로드하여 접속하게 한다)
    ssh -i linuxvm_key.pem azureuser@20.20.20.20
  • Private key와 Public key를 만들어서 Public Key를 복사하는 방법
    ssh-keygen
    ssh-copy-id root@vm1 (또는 ssh-copy-id -i ~/.ssh/id_rsa.pub root@vm2)
    반드시 암호대신 Private key 파일 이름을 지정해야 한다.
  1. sftp
  • 21번 포트가 아닌 22번 포트
  • vsftpd 서비스 제공 여부 확인하기: netstat -nltu
  • vsftpd에 접속한(연결함) 컴퓨터 확인하기: netstat -an | grep ESTABLISHED
  1. ansible
  • 여러 linux 컴퓨터들을 동시에 관리하는 방식
  • 이 때 ssh로 접속하여 관리
  1. mysql
  2. scp, ssh vm1 “ls -l ~root”


텍스트 웹 브라우저

  1. 원격 서버에 웹서비스가 실행중인지 확인하기
    curl https://google.com
    curl ifconfig.me (##내 컴퓨터의 공인 IP(공유기, 프록시 서버 IP) 확인)
  2. 원격 웹서버의 상세 정보 확인하기
    curl -v https://google.com
    curl -v https://google.com | grep Server
    curl -v https://www.webtime.co.kr | grep Server (Microsoft-IIS/10.0 웹서버)

웹서버 종류(nginx, apache, IIS 등등)와 인증서 정보(유효 기간)도 보인다

  1. 원격 컴퓨터의 index.html 파일 다운로드하기
    curl -o index.html http://www.nginx.com
  2. 원격 웹서버에 저장된 script 파일 실행하기
    curl -sSL http://down.cloudshell.kr/down/k8slab.sh | sh
    curl -sSL http://get.docker.com | sh

ansible을 이용하여 수십 대의 컴퓨터에 docker 설치하기

ansible servers -m shell -a ‘curl -sSL http://get.docker.com | sh’
ansible servers -m shell -a ‘systemctl enable docker –now’
ansible servers -m shell -a ‘docker version’
ansible servers -m shell -a ‘docker run –name myweb -d -p 8080:80 httpd’
curl vm1:8080


yum install net-tools -y

  1. 로컬 컴퓨터(내가 사용중인 컴퓨터)가 서비스 하고 있는 것 확인
    netstat -nltu (##LISTEN만 확인)
  2. 원격에서 내 컴퓨터에 접속한 컴퓨터 확인
    netstat -an | grep ESTABLISHED


yum install telnet -y

  1. 원격 컴퓨터에서 실행 중인 서비스 확인하기
    telnet 8.8.8.8 53
    telnet https://www.webtime.co.kr 443
    telnet vm1 22


yum install bind-utils -y

  1. 원격 컴퓨터 IP address 확인하기
    nslookup http://www.webtime.co.kr
    nslookup datasolution.kr
  2. local computer의 IP address 확인하기
    hostname -I
    ip addr show
    ifconfig


yum install nc -y
apt install netcat -y

  1. 원격 서버에 특정한 서비스가 실행중인지 확인하기
    nc -zv vm1 80
    nc -zv vm1 22
    nc -zv http://www.webtime.co.kr 443
    nc -zv onlinevision.center 80
    nc -zv down.cloudshell.kr 80
    nc -zv down.cloudshell.kr 443
  2. 우리 회사에서 3306(mysql) 포트를 우리 회사 방화벽에서 막고 있는지를 확인하기
    내 컴퓨터에 인위적으로 3306 포트를 Listen하도록 설정하여 원격 컴퓨터에서 접속이 되는지 확인한다
    nc -l -p 3306
    (##-l: listen, -p: port)

다른 컴퓨터에서 이 컴퓨터에 다른 세션으로 접속하여 3306 포트가 열려있는지(LISTEN) 확인해 보다
netstat -nltu
netstat -nltup (p:pid/program name으로서 어떤 프로그램으로 포트가 열렸는지도 확인 가능)

  1. 원격 컴퓨터에서 telnet으로 3306 포트가 열려 있는지 확인한다
    telnet 192.168.1.42 3306
    메시지가 connected to 192.168.1.42가 나오면 mysql 포트 번호로 접속이 되는 것을 알 수 있다
    그런데 다른 네트워크에서 3306으로 접속을 시도할 때 연결이 되지 않으면 회사 방화벽에서 차단하고 있다는 것을 알 수 있다
  2. 원격 컴퓨터에서 파일을 다운로드하기
    로컬 컴퓨터에서 사용되지 않는 포트(9025)를 사용하여 포트를 열어서 파일을 대기시킨다
    로컬 컴퓨터(192.168.1.42)에서 작업하기
    nc -l -p 9025 > big.file

원격 컴퓨터(192.168.1.2)에서 다운로드하기
nc 192.168.1.42 9025 > big.file

이런 작업을 할 때 로컬 컴퓨터나 회사 네트워크에서 방화벽을 사용하고 있다면 파일을 다운로드할 수 없다.

왜냐하면 방화벽은 기본적으로 모든 포트를 차단하고 있기 때문이다

  1. 포트를 열고 서로 메시지 전송하기
    로컬 컴퓨터(192.168.1.42)에서 작업
    nc -l -p 9025

원격 컴퓨터(192.168.1.3)에서 작업
nc 192.168.1.42 9025
이제부터 메시지를 입력한다
hi
nice to meet you

그 결과 로컬 컴퓨터에서 메시지가 나타난다. 그래서 그 메시지를 읽고 응답한다
me too
how is it going?

  1. 포트를 udp로 열고자 하면
    nc -l -u 9191

다른 컴퓨터에서 여기에 다른 세션으로 접속하여 다음과 같이 하면 udp로 열린 것을 알 수 있다
netstat -nltup

  1. 원격 컴퓨터에서 열린 Port scan 하기
    for i in $(seq 1 65535); do nc -nvz -w 1 192.168.1.3 $i 2>&1; done | grep -i connected

참고: https://tar-cvzf-studybackup-tar-gz.tistory.com/65