우분투에서 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)