본문 바로가기

Linux/Ubuntu

[Ubuntu] SSH(Secure SHell) Key 비밀번호 없이 로그인

SSH



원격지에 있는 컴퓨터를 안전하게 제어하기 위한 프로토콜 


클라이언트 - 서버 사이에 강력한 암호화 방법을 통해서 연결되어 있기 때문에, 데이터를 중간에 가로채도 해석 할 수 없는 암호화된 문자만이 노출



SSH Key


서버에 접속할 때, 비밀번호 대신 key를 제출하는 방식

  • 로그인 없이 자동으로 서버에 접속
  • 비밀번호 보다 높은 수준의 보안이 필요로할 때

SSH Key 작동 방식



private key, public key 가 존재.


private key -> 로컬 머신 


public key -> 리모트머신(원격 제어를 받을)


SSH 접속을 시도하면 리모트 머신이 로컬 머신의 private key와 리모트 머신의 private key를 비교해서 일치여부 확인



SSH Key 만들기



"ssh-keygen -t rsa" 를 타이핑하여 key 생성

경로를 설정해주고(그냥 엔터 누르면 기본경로로 설정된다.) 비밀번호 입력(생략가능, 자동로그인 원하면 생략해야 한다.)


cd .ssh 를 통해 ssh 디렉토르로 이동 후, ls -al 을 통해 id_rsa, id_rsa.pub가 생성 되었는지 확인



파일의 대한 설명

id_rsa       : private key, 절대로 타인에게 노출되면 안된다.

id_rsa_pub : public key, 접속하려는 리모트 머신의 authorized_keys에 입력한다.

authorized_keys : 리모트 머신의 .ssh 디렉토리 아래에 위치하면서 id_rsa.pub 키의 값을 저장한다.


.ssh 디렉토리 안의 파일은 매우 중요하다 권한 설정이 꼭 필요함


1
2
3
4
5
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts


다음과 같은 순서로 설정을 권장



SSH Key 사용하기



SSH Server의 authorized_keys 의 내용이 SSH client의 id_rsa.pub 파일과 같아야 한다. 따라서 ssh 접속 시 id_rsa와 authorized_keys의 파일을 비교한다. 일반적으로 SCP를 사용하여 key를 전송한다.


master가 slave1에 접근하고 싶을 경우이다.




scp $HOME/.ssh/id_rsa.pub hduser@slave1:id_rsa.pub 를 작성하여 key를 전달해 준다.

아래와같이 id_rsa.pub              100% ~~ 가나오면 성공!

hduser@slave1 -> 사용자id@상대방ip주소




처음 scp를 사용할때, 22번 포트 문제가 있었다 이럴때는

openssh-server, openssh-client 패키지를 설치해주면 해결 되었다.

sudo apt-get install openssh-server openssh-client





slave1에 키를 보낸 후, slave1은 받은 key값은 인증키(authorized_keys)에 추가해 준다.

cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys



인증키에 추가한 후, master로 돌아와 ssh slave1 or userID@userAdress 를 치면 로그인이 된다.

나는 slave1, slave2, master의 모든 id를 hduser로 설정하고, slave1,slave2,master 의 주소정보를 /etc/hosts로 추가해주었다.

다음과 같이 비밀번호 없이 바로 로그인이 되면 성공이다.



로그아웃 시에는 exit 키워드를 이용해 slave1에서 master로 다시 나와주면 된다.




출처



https://opentutorials.org/module/432/3742 생활코딩 강의

https://www.youtube.com/watch?v=RWzJoTWv9M4&t=790s 우분투를 이용한 하둡 멀티노드 설치( 멀티노드 네트워크 설정)