안녕하세요. 달소입니다.
이번글은 피치못하게 외부로 ssh를 오픈해야할 경우 필수 설정이라고 보시면 되겠습니다.
클라우드서비스를 이용해보신분들이라면 ssh 접근시 반드시 키값을 사용해야만 로그인을 하실 수 있는걸 아실텐데요.
이걸 일반 리눅스 환경에서 초기부터 셋팅하는방법입니다.
셋팅 적용시 콘솔로 붙거나 키값으로만 접속이 가능하기때문에 잘 따라해주시면되겠습니다.
SSH Key 등록을 통해 원격접속하기
ssh key란 간단히 말해서 클라이언트와 서버와 key 인증을 통해서 인증하게되는걸 의미합니다.
사용하고있는 pc에서 key를 만들고 서버쪽에 해당 서버에 공개키를 업로드해서 등록해주면 됩니다.
이렇게 ssh key를 이용하면 접속시에 계정과 pw를 입력하지않아도 접속이 가능합니다.
물론 일반 password 대신에 pass phrase 를 등록하면 또 패스워드처럼 사용도 가능합니다.
진행과정은 Client에서 ssh key만들기 -> 공개키를 서버에 업로드하기 -> 업로드한 공개키를 원하는 계정의 .ssh 폴더에 이동시키기. -> 인증내용에 추가하기 입니다.
Client에서 ssh key 만들기
제가 사용하고있는 Windows를 기준으로 진행하겠습니다.
먼저 cmd창을 열어주세요. 그리고 아래명령어를 입력해서 키를 만들어줍니다.
ssh-keygen -t rsa -b 4096
만들때 위치와 passphrase를 입력하라고 나오는데 키인증이외에 pw로 한번 더입력하시고싶으시면 넣으시면됩니다.
비워놔도 무방.
이제 해당 위치로 가서 ssh 키 생성을 확인합니다.
기본경로는 C:\Users\[계정명]\.ssh 입니다.
여기서 id_rsa는 개인키로 절대 공유해서는 아되며 id_rsa.pub는 공개키로 이 키를 서버에 업로드해주시면됩니다.
처음 업로드이기 때문에 winscp를 통해 해주셔도 되고 cli 익숙하신분이라면
아까 그 cmd 화면에서
cd .ssh
scp id_rsa.pub [계정명]@[서버ip]:[홈경로] 로 업로드해주셔도됩니다.
가시성은 winscp 가좋습니다
업로드 후 putty로 ssh 접근 후 해당 파일을 접속시 사용할 계정의 .ssh/authorized 에 추가하겠습니다.
저같은경우 root 계정을 해당 키로 접속할 예정입니다.
cat id_rsa.pub >> /[계정명]/.ssh/authorized_keys 에 넣어주시면됩니다.
이렇게 키를 넣게되면 cmd창에서도 ssh로 pw없이 접속이 됩니다.
SSH 패스워드접속 차단하기.
이제 Key로만 접근할 수 있도록 SSH설정값을 변경해주시면 됩니다.
vi /etc/ssh/sshd.conf
그리고 주석처리되어있는 항목들을 풀고 변경해주세요.
모두 주석처리가 되어있으실경우 아예 아래처럼 값을넣어주셔도 됩니다.
PubkeyAuthentication yes PasswordAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
설정이 완료되었으면 service sshd restart명령어로 재시작시켜주시면됩니다.
그리고 ssh접속을 시도해보시면 아래처럼 에러가 나오실겁니다.
cmd창에서 ssh를 칠경우 기본경로에 키값이 있기때문에 ssh 계정명@ip로 하면 아래처럼 만든키의 passphrase를 입력하라고 나옵니다.
putty의 경우에는
puttygen을 통해서 ppk로의 변환이 필요한데요.
Puttygen을 실행시켜로 load로 개인키를 불러오시고
불러온 개인키를 Save private key로 ppk형식으로 저장합니다.
그리고 putty를 켜서 SSH -> auth 쪽에 방금 저장한 ppk를 불러온뒤 ip로 접속하시면됩니다.