728x90
반응형

31. 로그인 없이 로그인 하기(SSH Key)

31.1 Loginless : ssh public private key

SSH, rsync, git과 같은 기술을 사용할 때 로그인이 번거롭고 보다 안전한 방법으로 인증하고 싶다면 SSH공개키를 이용하면 됩니다. 

SSH공개키를 이용하면 편의성과 보안성 모두를 높일 수 있다고 하네요.

linux1컴퓨터

 · ssh-keygen -> enter -> y : id_rsa파일의 형태로 저장됩니다. 공개키와 비공개키를 만드는 것이죠.

 · cd ~ : 홈 디렉토리로 이동합니다

 · ls -al : .ssh디렉토리가 생성되어 있습니다.

 · cd ~/.ssh -> ls -al : authorized_keys파일 안에 id_rsa.pub키의 값을 파일 끝에 붙여주면 됩니다.

 · ssh-copy-id egoing@192.168.0.67 : 로그인하고자 하는 컴퓨터의 IP주소를 입력하여 linux1의 아이디를 복사를 하는 명령어입니다. 즉 linux1에 있던 is_rsa.pub에 값이 linux2 authorized_keys파일에 공개키가 저장됩니다.

linux1의 사용자를 linux2컴퓨터에 로그인하는 것을 허용한다는 의미로 해석됩니다.


linux2컴퓨터

 · cat authorized_keys : authorized_keys파일의 내용을 읽습니다.




31.2 Loginless2 : rsync

rsync는 컴퓨터와 컴퓨터 사이 동기화를 시키는 것인데요. 동기화를 위해서는 기본적으로 로그인 필요합니다.

linux1 컴퓨터

 · mkdir rsync3 -> cd rsync3 : rsync3디렉토리로 이동합니다.

 · touch test{1..100} : 100개의 비어 있는 파일이 생성됩니다.

 · rsync -avz .egoing@192.168.0.67:~/rsync_welcome : 현재 디렉토리에 있는 내용을 IP주소의 홈 디렉토리 밑 rsync_welcome의 디렉토리에 100개 파일을 동기화 시키는 명령어입니다.

linux2 컴퓨터

 · mkdir rsync_welcome: rsync_welcome디렉토리를 생성


rsync기능은 실행에 있어 편리합니다. cron은 정기적으로 명령을 실행시키는 것인데요.

rsync로 자동로그인하여 cron을 이용하여 정기적으로 백업을 자동화 처리할 수 있습니다.


31.3 Loginless3 : RSA

정보를 아무도 모르게 알아야 하는 사람만 알도록 이해할 수 없는 정보로 바꾸는 것을 암호화(encrypt)

암호화된 상태를 원래의 상태로 돌리는 것을 복호화(decrypt)라고 합니다.

Key를 이용해 암호화와 복호화를 하는데요. 키를 가진 사람만이 암호를 읽을 수 있겠죠.

암호화를 할 때와 복호화를 할 때 똑같은 키를 사용하는 것을 대칭적인 방식이라고 부릅니다.

예를 들면 정보를 암호화할 때 private키를 통해 암호화를 하는 것이죠.

private키를 public키로 돌릴 수 있는데 각각의 키가 달라지는 방식을 비대칭 방식이라고 합니다.

예를 들면 ssh키젠을 이용해 키를 만들 때 id_rsa(private키), id_rsa.pub(public키)가 짝을 이루어 다닙니다.

암호화할 때 private키를 썼다면 복호화 할 때 반드시 public키를 사용해야 합니다.

비대칭 방식의 대표 주자가 바로 RSA인데요

RSA방식은 SSH client가 SSH server에게 접속한다면 서버는 클라이언트에게 랜덤키를 줍니다. 랜덤키를 받은 클라이언트는 id_rsa파일이 있는 지 확인하고 서버가 전송한 랜덤키를 암호화(정보를 알아야하는 사람만 알도록 정보로 바꾸는 것) 시킵니다. 암호화된 결과를 다시 서버에게 전송합니다. SSH server는 암호화된 정보를 authorized_keys에 저장된 공개키를 이용해 다시 복호화(암호화된 상태를 원래의 상태로 돌리는 것)합니다. 복호화된 결과(클라이언트가 보내준 암호화된 키)가 SSH server가 랜덤키의 결과와 같다면 로그인을 허용하는 것입니다.

RSA방식은 아이디, 패스워드를 입력하는 것보다 복잡한 패스워드를 파일에 저장하여 파일을 갖고 로그인하는 것이 훨씬 안전하다고 하네요.



linux1컴퓨터

 · ls ~/.ssh/ : id_ras(private키), id_rsa(public키) 등의 파일 목록이 있습니다.

 · ssh egoing@192.168.0.67 : linux2 컴퓨터로 로그인합니다.

linux2컴퓨터

 · ls ~/.ssh : authorized_keys파일에 id_rsa_pub값을 가진다면 컴퓨터에 접속을 허용하겠다는 의미입니다.


32. 연속적으로 명령 실행시키기(;과 &와 &&의 차이)

CLI를 통해 컴퓨터를 제어하는 이유 중 하나는 해야 할 일을 순서대로 배치해서 자동화된 처리를 할 수 있다는 것입니다. 자동화된 처리를 위해서 명령어와 명령어 간의 연결하는 구분자를 잘 알아야 할 필요가 있습니다. 언어로 치면 접속사와 같은 의미를 갖습니다.

 · ; : 세미콜론 앞의 명령어가 실패해도 다음 명령어를 실행합니다.

 · mkdir test;cd test : test디렉토리를 생성 후 test디렉토리로 이동합니다.

 · && : 앞의 명령어가 성공했을 경우에만 다음 명령어가 실행됩니다. 세미콜론과는 다른 의미를 갖죠

 · mkdir test; cd test; touch abc : 세미콜론은 성공과 실패를 떠나 연속적으로 실행해야 할 명령을 사용할 때 씁니다. test디렉토리는 이미 존재하기에 실패를 하고 test디렉토리를 이동하여 abc파일을 생성합니다.  반면에

 · mkdir test && cd test && touch abc : test디렉토리가 이미 존재하기에 실패하여 cd test와 touch abc가 실행되지 않습니다. 대체로 &&를 쓰는 것이 좋다고 합니다.

&와 &&의 차이

&명령어는 백그라운드로 동작시킬 때 사용합니다.

 · mkdir test & cd test : test디렉토리를 백그라운드로 생성함과 동시에 test디렉토리로 이동하려 했기에 cd test는 존재하지 않는 디렉토리로 진입을 하려 하기에 no such file or directory메시지가 뜨고 test디렉토리는 생성됩니다.

& : 앞의 명령어를 백그라운드로 돌리고 동시에 뒤에 명령어를 실행합니다.

 · mkdir test3 && { cd test3; touch abc; echo 'success!'; } || echo 'there is no dir';

: mkdir test3가 성공했을 때 cd test2; touch abc를 실행하고 success!!를 출력합니다. 실패했을 경우 'There is no dir'이 출력되죠.




생활코딩 리눅스 강의



728x90
반응형

+ Recent posts