본문으로 바로가기

SSH 접속 , 공개키생성

category Linux Style 2018.09.03 13:51

우분투에서 ssh설치하려다 삽질끝에 해결..

1. 설치

 

sudo apt-get  install ssh

 

openssh-server와 openssh-client같이 설치된다. 우분투 데스크톱 설치하면 client는 기본 설치된다고 하나 상관없다.

 

2. 설치후 Key 생성

 

sudo ssh-keygen -t rsa

 

경로지정할때 다음과 같이 지정

/etc/ssh/ssh_host_rsa_key

 

sudo ssh-keygen -t dsa

/etc/ssh/ssh_host_dsa_key

 

데몬시작해준다.

 

sudo /etc/init.d/ssh start

 

3. 위와 같이 했는데 start 시 아래메세지가 나온다.

 

Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
Disabling protocol version2. Could not load host key
sshd : no hostkeys available --exiting

그래서 호스트키 위에서 생성도 했기에 찾아보면 있다. 있는데 없다고 ㅠㅠ.

아마도 키생성에 문제였나보다..

네버 찾아본결과 아래와 같이 하면 해결이 된다.

 

sudo ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -N "" 

Generating public/private dsa key pair. 
/etc/ssh/ssh_host_dsa_key aleady exists.
Overwrite (y/n)? y
Your identification has been saved in /etc/ssh/ssh_host_dsa_key . 
Your public key has been saved in /etc/ssh/ssh_host_dsa_key .pub.
The key fingerprint is: 주저리주저리~~

사실 정말 키가 있었기때문에 위와같이 덮어 쓸꺼냐고 묻는다. 당연히 Yes로 대답하면 새로운 키를
생성한다. 그리고 다시 sshd 를 시작하면 좀 다른 메시지가 나온다.

Starting sshd [OK]
Could not load host key: /etc/ssh/ssh_host_rsa_key

이미 앞에서 dsa 키를 생성했으므로 그와 같은 방법으로 rsa 키도 생성해준다.

 

sudo ssh-keygen -d -f /etc/ssh/ssh_host_rsa_key -N "" 

Generating public/private rsa key pair. 
/etc/ssh/ssh_host_rsa_key aleady exists.
Overwrite (y/n)? y
Your identification has been saved in /etc/ssh/ssh_host_rsa_key . 
Your public key has been saved in /etc/ssh/ssh_host_rsa_key .pub.
The key fingerprint is: 주저리주저리~~

그리고 ssh를 재시작 해준다.

 

sudo /etc/init.d/ssh restart

 

접속 잘된다.

 

그러고 보면 위에서 키를 괜히 생성해줬나 싶기도 하다.. 다른 설치법에서는 key생성하는게 안나오더라..

 

4. 포트변경

 

SSH는 기본 22포트를 사용하는데 이대로 사용 해버리면 SSH Bruteforce 즉 SSH 무작위 공격이 와서 해킹을 당할수도 있습니다. 그러므로 22포트를 다른 포트로 변경하여 사용하면 그런 문제를 방지할 수도 있습니다. 물론, 기본 포트가 변경되기 때문에 불편해 질 수도 있습니다.

sudo gedit /etc/ssh/sshd_config

# Package generated configuration file

# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen for

# 아래 숫자를 원하는 포트번호로 수정

Port 3065

# Use these options to restrict which interfaces/protocols sshd will bind to

#ListenAddress ::

#ListenAddress 0.0.0.0


이후 ssh를 재시작

sudo /etc/init.d/ssh restart

 

5. 공개키 방식 사용

 

 위에서 키 생성을 했는데 적용법

패스워드 방식의 인증을 사용할 경우, 사람이 실제 키보드에서 입력할 수 있는 가능한 패스워드의 수에 한계가 있기 때문에 다양한 공격을 받을 수 있습니다. 위에 bruteforce attack도 그러한 방식입니다. 이 경우는 아예 패스워드 방식의 인증을 막고 공개키 방식의 인증만을 사용하도록 할 수 있습니다.

아래 파일을 열어서 다음 부분을 찾는다.

sudo gedit /etc/ssh/sshd_config

 

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

아래와 같이 고칩니다.

<PRE class="code sshdconfig"># Change to no to disable tunnelled clear text passwordsPasswordAuthentication no</PRE>

이후에 서버를 재시작합니다. 이렇게 하면 기존의 패스워드 방식의 인증을 사용하지 못하니 불편해 질 수 있습니다. 그러나 미리 공개키-비밀키 쌍을 생성하여 서버에 등록해 놓으면 편해집니다. (TODO)



댓글을 달아 주세요