21년 1월 7일

한 일

  • Linux SSH 서버 설치 및 config 방법 (Ubuntu)

    1. linux에 SSH가 설치되어 있지 않는 경우 SSH를 설치한다

      #SSH 서버 클라이언트 모두 설치
      sudo apt-get ssh
      #서버만 설치하고 싶으면
      sudo apt-get openssh-server
      
    2. /etc/ssh/sshd_config 파일을 통해 SSH 설정을 변경할 수 있다.

      참고: http://programmingskills.net/archives/315

  • Virtual Box으로 실행한 ubuntu에 ssh로 접속하기 (MAC 기준)

    • VM 내부 ubuntu에서 ifconfig 명령어로 사설 IP를 확인한다.

      image-20210107133137703

    • 기존 OS (host OS) 에서 사설 IP를 확인한다.

      • 맥은 터미널에서 ifconfg 또는 시스템환경설정 - 네트워크에서 확인
    • VirtualBox 에서 ubuntu 설정 - 네트워크 - 고급 - 포트포워드 클릭

      image-20210107134958414

    • 호스트 IP에 원래 OS의 IP주소, 호스트 포트에 접속할 때 사용할 호스트 포트를 입력한다.

    • 게스트 IP에 vm내부의 ubuntu IP주소를 입력하고, 게스트 포트에는 22를 입력한다.(SSH의 기본 포트는 22이고, unbuntu내에서 ssh 포트를 수정하였다면 수정한 포트 번호를 입력한다.)

      image-20210107135348581

  • 맥에는 기본적으로 tree명령어가 없기 때문에 tree명령어를 설치해보았다.

    1. Homebrew는 Apple에서 제공하지 않는 패키지 관리자를 설치할 수 있다.

      Homebrew를 설치한다

      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      
    2. homebrew를 통해 tree명령어를 설치한다

      brew install tree
      
  • 코드스쿼드 미션으로 간단한 shell script를 짜보았다.

    사용한 것은 아래에 적어놓았고 기본적인 쉘스크립트 문법은 구글링해서 익히자.

    • 해당 폴더가 존재하는지 확인
    if [ ! -d <폴더명> ]; then
      #do
    fi
    
    • 해당 파일이 존재하는지 확인
    if [ ! -f <파일명> ]; then
      #do
    fi
    
    • 특정 형식의 파일이 존재하는지 확인
    if [ $(find <폴더> -name <파일형식(*.cs 등)> | wc -l) -eq 0 ]; then
    	#do
    fi
    
    • 특정 형식의 파일만 zip로 압축 (tar도 거의 동일)
    find <폴더> -name <파일형식(*.cs 등)> | xargs zip <압축파일명>
    
    • scp로 remote에 파일 복사
    scp -P <포트번호> <복사할 파일명> <remote계정>@<remote IP>:<remote 파일경로(이 경로의 파일명으로 복사됨)>
    
  • 프로그래머스에서 [다리를 지나는 트럭], [프린터] 2문제를 풀었다.

    • 두 문제 다 queue를 이용하여 푸는 문제였다. 이미 풀었던 문제를 Java로 풀어보았다.

잘못한 것

  • Java의 정석과 TCP/IP 더 쉽게 책을 보지 못했다.

잘한 것

  • VM을 설치하여 ubuntu를 설치하고, SSH를 연결한 후, 호스트에서 특정 파일을 압축하여 게스트OS로 보내는 과정을 쉘 스크립트로 자동화 하였다.
    • SSH를 연결하는 과정에서 포트포워딩을 해보았고 이를 통해 NAT이라는 네트워크 개념을 익힌 후 글로 정리하였다.
    • SCP로 파일을 전송하는 과정에서 permission denied를 겪었고 이를 통해, Linux에서 Directory의 소유자, 그룹에 따른 권한이 어떻게 적용되는지 알게 되었다.

느낌

  • 코드스쿼드에서 준 미션을 단순히 풀기만 함으로써 네트워크 관련 지식을 검색하고 알게 되어 좋았다.
  • 내가 정한 계획을 지키지 못했지만, 게을러서 지키지 못했다기보다 다른 공부거리가 생겨 이를 하다 보니 시간이 늦어버렸다.
    • 오늘 호눅스가 얘기한 말을 기억하며,
      1. 전에 세웠던 계획을 다 소화 못하면 그것을 뒤로 미루지 말고 계획을 줄여서 새로 세우자!
      2. 내가 지치면 암것도 못한다. 길게 보고 최선을 다하자

할 일

  • 프로그래머스 2문제 풀기
  • Java의 정석 읽기
  • TCP/IP쉽게 더쉽게 읽기