<In Story>

우분투 ssh/rsa, sftp 설정 // [OS] [Linux] [Ubuntu] [FTP] [Network] 본문

OS(operating system)/Unix, Linux

우분투 ssh/rsa, sftp 설정 // [OS] [Linux] [Ubuntu] [FTP] [Network]

<In Story, Hi story, History> 2015. 5. 5. 11:27

http://webdir.tistory.com/205


우분투 12.04 설치시 SSH를 설치했다면 바로 설정하면 된다.

설치하지 않았다면 아래와 같이 설치한다.

sudo apt-get install ssh-server

( 서버용이니 클라이언트는 필요없다. )

SSH 설정

sudo vi /etc/ssh/sshd_config

  # 포트설정
  Port 22  

  # 자동로그인파일무시
  IgnoreRhosts yes   

  # root로그인금지
  PermitRootLogin no   

  # sudo(관리자)그룹만로그인가능( 다른유저들도 ssh로그인을 가능하게 하려면 이부분 삭제 )
  AllowGroups sudo    

접기

  • AllowGroups : 여기에 등록된 group만 접속 가능함
  • AllowUsers : 이곳에 등록된 계정만 접속 가능함
  • DenyGroups : 모두 접속이 허용, 여기에 등록된 group만 접속 거부됨
  • DenyUsers : 모두 접속이 허용, 여기에 등록된 계정만 접속 거부됨

예1) test1 와 test2 만 ssh 접속을 허용 space bar로 구분)

AllowUsers      test1 test2

예2) 모든 유저의 접속을 허락하고 help 라는 유저의 접속을 막는다.

DenyUsers      help

접기

접기

서버 관리자등으로 sudo 사용자가 필요할때 추가하기
sudo useradd -G sudo 사용자ID
혹은
sudo vi /etc/group
sudo 에 직접 사용할 ID 추가

접기

SFTP 설정

SSH서버를 사용하면 SSH를 이용한 FTP(SFTP)도 사용할 수 있다. 개인이 혼자 사용하는 서버라면 별다른 설정없이 기존의 계정으로 SFTP를 사용할 수 있고 다른 사용자들과 함께 사용하기 위해서는 SFTP를 chroot 하에 설정하여 사용할 수 있다.

SFTP 사용법

접속

sftp 사용자ID@호스트명

SFTP 명령어

  • get : 다운로드
  • mget : 다수의 파일을 다운로드
  • put : 업로드
  • mput : 다수의 파일을 업로드
  • ls : 접속한 SFTP의 파일 목록 출력
  • !ls : 로컬 서버의 파일 목록 출력
  • !{명령어} : 로컬 서버에서 실행

접기

메뉴에서 파일 > 사이트관리자
- 일반 탭의 호스트명 입력
- 포트는 22
- 로그인 유형 일반
- 사용자 ID 입력
- 비밀번호 입력

사이트관리자 > 고급탭
- 기본 리모트 디렉토리에서 원하는 위치지정(ex. /var/www , 정하지 않으면 기본값이 사용자 홈디렉토리)

접기

SFTP chroot 설정

정확한 설정법은 아직 모르겠다. 아래의 내용은 성공한 구성은 아니다. 참고만 하길...

1. SFTP 사용자들을 위한 전용 그룹 생성

sudo groupadd sftpusers

2. SFTP 사용자 추가

사용자 tiffiny의 로그인그룹을 sftpusers로 지정하고 shell 로그인이 불가능한 nologin 지정

sudo useradd -G sftpusers -s /sbin/nologin tiffiny

3. 패스워드 입력

sudo passwd tiffiny

우분투 12.04 에서는 /etc/default/useradd 의 설정내용이 SHELL 을 제외한 다른 부분들이 모두 주석처리 되어 있다. 그래서 인지 사용자를 추가해도 홈디렉토리및 기타파일들이 생성되지 않는다. 불필요한 파일들이 생성되지 않는 것은 좋으나 이것때문에 잠시 또 삽질을 하게 되었다.

4. 사용자 홈디렉토리 생성

sudo mkdir /home/tiffiny

5. 소유권설정 및 권한설정

우선 tiffiny 디렉토리 이하에 생성될 파일들에 대한 소유권을 위와 같이 설정

sudo chown -R tiffiny.sftpusers /home/tiffiny

각 사용자들의 홈 디렉토리 자체는 소유자 및 소유그룹이 모두 root여야 한다

sudo chown root.root /home/tiffiny

6. SSH 설정

sudo vi /etc/ssh/sshd_config

  Subsystem sftp internal-sftp
  Match group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp

위의 설정대로 해보았는데 안된다... 왜일까?

그 밖의 설정방법을 링크한다. > Centos SFTP설정

RSA key를 이용한 로그인

일반 패스워드를 사용하는 로그인 방식보다 rsa 키를 이용한 접속이 보다 보안에 좋다. 그리고 일단 한번 설정해 놓으면 편하다.

우선 ssh 서버설정에서 rsa키 사용에 대한 설정이 제대로인지 살펴본다.

sudo vi /etc/ssh/sshd_config 

  PubkeyAuthentication yes
  RSAAuthentication yes

접기

리눅스에서는 ssh-keygen을 이용해서 생성한다.
클라이언트에서 해야할일

아래의 명령어들을 실행한다.

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
명령어 실행후 나오는 다이얼로그들 중에 rsa에 암호를 걸 수 있으나 필요치 않으면 엔터로 기본값 사용으로 넘길수 있다.
~/.ssh 디렉토리 밑에 id_rsa 와 id_rsa.pub 이 생성되었다면 성공

서버로 id_rsa.pub을 전송

scp ~/.ssh/id_rsa.pub 사용자ID@호스트명:id_rsa.pub
서버에서 할일
mkdir ~/.ssh
chmod 700 ~/.ssh

전송된 id_rsa.pub을 설정

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
권한은 아래와 같이 클라이언트와 서버 모두 설정한다.
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_host

접기

접기

윈도우에서는 putty와 xshell을 이용하는 방법을 설명한다.
putty rsa 설정법 <-- 링크로 대체
xshell 을 이용한 방법
1.도구 > 사용자 키 생성 마법사 > 아래항목 셋팅 > 다음 
- 키 유형 : RSA 
( ssh1 프로토콜은  RSA 키만을 지원하고, ssh2 프로토콜은 RSA와 DSA 모두 지원, 서버에맞게 선택 ) 
- 키 길이 : 1024 
( 키 길이가 길면 보다 안전하고, 짧으면 처리 속도가 빨라집니다. 일반적인 경우 1024 비트가 적당함 ) 
2. 키 생성이 성공적으로 끝남 > 다음 
3. 생성된 키에 암호를 걸경우 암호를 입력 > 다음 
4. 공개 키 등록 > 파일로 저장 
- 공개키 형식 : 대부분의 서버가 SSH2-OpenSSH 를 사용하니 그것을 선택 
5. 서버에 등록 
- 공개키를 ~/.ssh/authorized_keys2 파일에 복사해 넣음( .ssh 디렉토리가 없다면 생성, 권한 700 ) 
6. 권한 변경
chmod 664 ~/.ssh/authorized_keys2
xshell 쪽에서는 authorized_keys2 로 파일을 생성하도록 하고 있는데 표준방식은 authorized_keys 에 작성하는 것이다. 변경해도 따로 문제가 없이 잘 작동하고 있다.

접기

authorized_keys 와 authorized_keys2 두개가 등장하여 구글링해보니 과거 OpenSSH 3.0 이하에서 authorized_keys2 존재를 발견할수 있었다. OpenSSH 쪽에서는 현재 모든 키를 authorized_keys 에 키를 작성하도록 하고 있으며 authorized_keys2는 단지 과거의 방식에 대한 대체수단일뿐 이며 이는 언제든지 지원하지 않을 수 있다는 것이다.

개인키는 클라이언트쪽에서 생성하고 서버쪽으로 공개키만을 전송하는 것이 보안상 좋다.

참고 : http://marc.info/?l=openssh-unix-dev&m=100508718416162&w=2