- 인증
- 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 파일 이름을 지정해야 한다.
- sftp
- 21번 포트가 아닌 22번 포트
- vsftpd 서비스 제공 여부 확인하기: netstat -nltu
- vsftpd에 접속한(연결함) 컴퓨터 확인하기: netstat -an | grep ESTABLISHED
- ansible
- 여러 linux 컴퓨터들을 동시에 관리하는 방식
- 이 때 ssh로 접속하여 관리
- mysql
- scp, ssh vm1 “ls -l ~root”
텍스트 웹 브라우저
- 원격 서버에 웹서비스가 실행중인지 확인하기
curl https://google.com
curl ifconfig.me (##내 컴퓨터의 공인 IP(공유기, 프록시 서버 IP) 확인) - 원격 웹서버의 상세 정보 확인하기
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 등등)와 인증서 정보(유효 기간)도 보인다
- 원격 컴퓨터의 index.html 파일 다운로드하기
curl -o index.html http://www.nginx.com - 원격 웹서버에 저장된 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
- 로컬 컴퓨터(내가 사용중인 컴퓨터)가 서비스 하고 있는 것 확인
netstat -nltu (##LISTEN만 확인) - 원격에서 내 컴퓨터에 접속한 컴퓨터 확인
netstat -an | grep ESTABLISHED
yum install telnet -y
- 원격 컴퓨터에서 실행 중인 서비스 확인하기
telnet 8.8.8.8 53
telnet https://www.webtime.co.kr 443
telnet vm1 22
yum install bind-utils -y
- 원격 컴퓨터 IP address 확인하기
nslookup http://www.webtime.co.kr
nslookup datasolution.kr - local computer의 IP address 확인하기
hostname -I
ip addr show
ifconfig
yum install nc -y
apt install netcat -y
- 원격 서버에 특정한 서비스가 실행중인지 확인하기
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 - 우리 회사에서 3306(mysql) 포트를 우리 회사 방화벽에서 막고 있는지를 확인하기
내 컴퓨터에 인위적으로 3306 포트를 Listen하도록 설정하여 원격 컴퓨터에서 접속이 되는지 확인한다
nc -l -p 3306
(##-l: listen, -p: port)
다른 컴퓨터에서 이 컴퓨터에 다른 세션으로 접속하여 3306 포트가 열려있는지(LISTEN) 확인해 보다
netstat -nltu
netstat -nltup (p:pid/program name으로서 어떤 프로그램으로 포트가 열렸는지도 확인 가능)
- 원격 컴퓨터에서 telnet으로 3306 포트가 열려 있는지 확인한다
telnet 192.168.1.42 3306
메시지가 connected to 192.168.1.42가 나오면 mysql 포트 번호로 접속이 되는 것을 알 수 있다
그런데 다른 네트워크에서 3306으로 접속을 시도할 때 연결이 되지 않으면 회사 방화벽에서 차단하고 있다는 것을 알 수 있다 - 원격 컴퓨터에서 파일을 다운로드하기
로컬 컴퓨터에서 사용되지 않는 포트(9025)를 사용하여 포트를 열어서 파일을 대기시킨다
로컬 컴퓨터(192.168.1.42)에서 작업하기
nc -l -p 9025 > big.file
원격 컴퓨터(192.168.1.2)에서 다운로드하기
nc 192.168.1.42 9025 > big.file
이런 작업을 할 때 로컬 컴퓨터나 회사 네트워크에서 방화벽을 사용하고 있다면 파일을 다운로드할 수 없다.
왜냐하면 방화벽은 기본적으로 모든 포트를 차단하고 있기 때문이다
- 포트를 열고 서로 메시지 전송하기
로컬 컴퓨터(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?
- 포트를 udp로 열고자 하면
nc -l -u 9191
다른 컴퓨터에서 여기에 다른 세션으로 접속하여 다음과 같이 하면 udp로 열린 것을 알 수 있다
netstat -nltup
- 원격 컴퓨터에서 열린 Port scan 하기
for i in $(seq 1 65535); do nc -nvz -w 1 192.168.1.3 $i 2>&1; done | grep -i connected