SSH

About authentication to Github

다음과 같은 메일이 왔다.

Hi @euikook,

You recently used a password to access the repository at euikook/wiki.notes with git using git/2.30.2.

Basic authentication using a password to Git is deprecated and will soon no longer work. Visit https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information around suggested workarounds and removal dates.

Thanks, The GitHub Team

Github Blog Token: Token authentication requirements for Git operations

보안 강화를 위하여 2021년 08월 13일 부터 Git 작업을 위한 인증 시 암호를 통한 인증을 지웒 하지 않는다고 한다. 2021년 08월 13일 이후에는 Git 작업을 위해서는 토큰 기반 인증을 사용하거나 SSH 키를 통한 인증을 사용해야 한다.

지금도 2 단계 인증을 활성화 한 사람은 암호를 통한 인증을 사용할 수 없다.

About authentication to Github

Github에 인증하는 방법은 다음과 같다.

  • (2 단계 인증을 통한) username, password
  • Personal access token
  • SSH Key

Github.com에 수정사항을 기여(Contribution)하지 않는 다면 크게 상관 없다.

2 단계 인증을 사용하고 있다면 지금도 계정 암호가 아니라 Personal Access Token을 통해서 인증 해야 하기 때문에 상관이 없다.

SSH config and Include Statement

~/.ssh/config

SSH를 사용하다보면 서버별 접속 옵션이나 암호화 방식을 달리 해야 될 경우가 있다. 이때 이러한 설정 정보들을 ~/ssh/config 파일에 저장해 두면 접속시에 명령행에 옵션으로 주지 않더라도 적용된다.

~/.ssh/config파일의 활용법은 다음과 같다.

서버 별칭(Aliases) 부여

또한 Domain Name이 할당되어 있지 않고 IP 주소로 접속하는 경우 서버에 자신만의 이름을 부여하고 그 이름으로 접속할 수 있기 때문에 매우 유용하다.

접속하고자 하는 IP 1.2.3.4에 Domain Name이 할당되어 있지 않거나 해당 IP 정보가 /etc/hosts에 지정되어 있지 않더라도 호스트 지정자로 1.2.3.4test로 지정돼어 있기 때문에 1.2.3.4 뿐 아니라 test로 접속 해도 1.2.3.4 로 접속된다.

ssh 1.2.3.4

또는

ssh test

접속 SSH Port 변경

외부에 공개된 서버의 SSH 데몬의 포트 번호를 보안상의 이유등으로 변경한 경우 변경된 SSH 포트 번호를 config 파일에 Port 옵션으로 지정하면 -p 옵션으로 포트번호를 지정할 필요 없이 접속가능하다.

Host example.com
    Hostmname example.com
    Port 5545
    PreferredAuthentications password 
    PubkeyAuthentication no

인증을 위한 Identity 파일 지정

키 관리를 위해 Key Agent를 사용하지 않는 경우 인증을 위해 Identity 파일을 명시적으로 -i 옵션으로 지정할 수 있다.

~/ssh/config 파일에 IdentityFile 옵션을 사용하여 명시적으로 Private Key를 지정할 수 있다.

아래는 example.com인증을 위해 개인키로 ~/.ssh/test를 지정한 예제이다.

Host example.com
    Hostmname example.com
    IdentityFile ~/.ssh/test

Keep persistent SSH session using autossh and cron

Keep persistent SSH session using autossh and cron

Background Knowledge

SSH Tunneling

  • Local Port Forwarding: used to forward a port from the client machine to the server machine.
  • Remote Port Forwarding:

Local Port Forwarding

ssh -L [bind_addr:]port:target_addr:target_port user@server
  • bind_addr
  • port
  • target_addr
  • target_port
  • user
  • server

Remote Port Forwarding

ssh -R [bind_addr:]port:target_addr:target_port user@server
  • bind_addr
  • port
  • target_addr
  • target_port
  • user
  • server

RSYNC+SSH 를 이용한 증분 백업 설정 및 Cron을 이용한 자동화

RSYNC+SSH 를 이용한 증분 백업 및 Cron을 이용한 자동화

관리 하는 서버가 많아지고 서버에 저장되는 데이터의 양이 늘어 날 수록 백업을 어떻게 하여야 하는지 고민이 생긴다.

이 포스트에서는 RSYNC와 SSH를 이용하여 여러 서버의 데이터를 백업하고 이를 자동화 하는 방법에 대하여 기술 한다. 테스트를 위한 서버 구성은 다음과 같다.  

아래 예제 에서는 apple, banana, coconut/home 디렉터리를 backupbot으로 백업 하고자 한다.

Backup Environment