곧 있으면 AWS free tier 기간이 끝나서 계정을 하나 새로 파기로 했다.

처음엔 그냥 기존 계정 지우고 나서 재생성하면 다시 1년짜리 프리티어를 받을 수 있을거라 생각했는데 역시나 약은 생각이었다.

계정관리 대쉬보드에 들어가보니 계정 탈퇴 또는 삭제하는 탭은 아예없고 대신에 계정 닫기 탭만 있더라. 

이렇게 계정을 지우지 않고 영구히 보존하는 시스템인가 보다.

그래서 어쩔수 없이 새로운 이멜로 계정을 새로 팠다.

그러고 나서 몇가지 기존 자료들을 새로운 인스턴스로 옮기고 기존의 계정은 인스턴스를 삭제하고 계정 닫기를 하였다.

이거 정말 중요한데 혹시나 나처럼 계정 옮길 예정이라면 기존에 사용하던 인스턴스는 꼭 닫아야 한다.

안그러면 무료기간 끝나고 얄짤없이 과금된다...


암튼 여차저차 새 인스턴스를 만들고 나서 서버 세팅을 하였는데 접속 할때마다 공개키인증을 하는게 넘 귀찮다. 

그냥 갠적으로 사용하는데 중요한 자료를 보관하는 것도 아니라서 공개키인증을 사용할정도로 보안수준을 높힐 필요성을 못 느껴서 간단히 패스워드 인증으로 하고 싶었다.

그래서 장장 몇시간동안 구글링을 통해 찾아본 결과 다음과 같이 SSH 세팅을 하면 되더라


일단 에디터로 /etc/ssh/sshd_config를 연다.

이 파일은 권한이 -rw-r--r-- 로 설정 되어있으므로 root계정또는 sudo로 열어야 한다.

그리고 PasswordAuthentication 를 찾는데, 이게 디폴트로 no일 것이다.

이걸 yes로 바꿔주면 된다.

그럼 세션 접속할 때 키파일 없이 해당 계정의 패스워드만 입력해서 접속하게 된다.


만약 특정 그룹 또는 계정에만 패스워드 인증을하고 나머지에겐 공개키인증을 하게 만들고 싶다면 PasswordAuthentication는 no로 두고 파일의 맨 끝에 다음을 추가한다.


Match ( user | group ) 계정 또는 그룹 이름

PasswordAuthentication yes



예를 들어 schtakadurr 라는 계정만 패스워드 인증을하고 나머진 공개키인증을 하고 싶다면

Match user schtakadurr

PasswordAuthentication yes

로 하면 된다.


여기서 중요한게 이 옵션을 파일의 맨 끝에 추가하지 않고 다른곳에 넣는다면 network error라는 메시지와 함께 접근이 거부된다.


여기까지 설정을 마쳤으면 저장을 하고 

sudo service ssh restart 로 ssh데몬을 재시작 하면 설정 끝


그럼 ㅅㄱ~

Posted by nfyfamraa
,

while(1) 과 for(;;)

언어/C 2016. 5. 31. 09:57

문득 군복무시절 동기의 코드가 기억이 났다.

...

for(;;) {

...

}


이런 문장이었는데 처음보는 코드라 동기에게 물어봤더니 무한루프랜다

당시 무한루프라고는 while(1) 밖에 몰랐던 나에겐 신선한 충격이었고

for 보다 while을 쓰는 편이더 직관적이지 않냐고 물어보았다.

근데 더 놀라는건 내 동기 ㅋㅋㅋ

for이 비교식을 넣지 않았기 때문에 더 직관적이지 않냐며 반문하는 것이었다.

그 때 이후로 나도 무한루프가 필요할 땐 for을 사용하기 시작했는데

최근에 찾아보니 for(;;)은 무한루프를 위한 특수 문법으로 C언어 명세서에 정의 되어있다고 한다.

구 컴파일러에서는 for은 비교식을 실행하지 않고 바로 루프를 도는 반면 while(1)은 비교식을 실행하고 루프구문을 실행하므로 속도차이가 있었다고 한다.

그래서 옛날 프로그래머들은 for을 많이 선호 했다고 카더라. 그리고 그게 지금까지 습관으로 이어진거고...

물론 최근의 컴파일러는 그딴거 없고 어셈블리 까보면 둘다 똑같이 비교식이 없다.

참고로 읽을 땐 forever라고 읽는다.

스택오버플로우에선 이런코드도 보았다.

#define ever (;;)

for ever { ... }

Posted by nfyfamraa
,