목차
SSH server & client 프로그램 포팅의 목적 및 방법 -------------- 1p
수행일정 -------------------------------------------------------------- 1p
수행인원 -------------------------------------------------------------- 1p
SSH 정보 수집및 파일 다운로드 ------------------------------------ 2p
SSH HOST 설치 및 테스트------------------------------------------ 2p
SSH 타겟 포팅 ------------------------------------------------------- 8p
SSH 서비스 테스트 및 보고서 작성 -------------------------------- 13
참고자료 -------------------------------------------------------------- 14p
수행일정 -------------------------------------------------------------- 1p
수행인원 -------------------------------------------------------------- 1p
SSH 정보 수집및 파일 다운로드 ------------------------------------ 2p
SSH HOST 설치 및 테스트------------------------------------------ 2p
SSH 타겟 포팅 ------------------------------------------------------- 8p
SSH 서비스 테스트 및 보고서 작성 -------------------------------- 13
참고자료 -------------------------------------------------------------- 14p
본문내용
팅은 host system에서 해당 서비스를 구현 후 arm processor 기반의 target 시스템에 포팅하는 교차 개발 환경을 구성하여 SSH server & client 프로그램을 구성하였습니다.
Ⅱ. 수행 일정
SSH 정보 수집 및 파일 다운로드
08. 10. 27 ~ 08. 10. 28
SSH HOST 설치 및 테스트
08. 10. 28 ~ 08. 10. 30
SSH 타겟 포팅
08. 10. 31 ~ 08. 11. 02
SSH 서비스 테스트 및 보고서 작성
08. 11. 02 ~ 08. 11. 04
Ⅲ. 수행 인원
1. SSH 정보 수집및 파일 다운로드
SSH 구성을 위한 openssh, openssl, zlib를 각각 다운로드하여 /pxa255/openssh에 다운로드 하였습니다.
2. SSH HOST 설치 및 테스트
1. tar와 압축을 풀고 해당 파일의 내용을 확인할 수 있습니다.
2. 타겟 시스템이 arm 기반의 보드이기 때문에 arm-linux-gcc 컴파일러를 통해 arm에서 동작 가능하도록 옵션을 설정합니다.
설치 디렉토리는 /openssh/build로 정했습니다.
3. 설정이 정상적으로 완료 되었습니다.
make를 통해 설정한 옵션대로 컴파일을 합니다.
컴파일된 파일을 실제로 install을 합니다.
다음으로 SSL을 설치하기전 Configure 파일을 수정하기 위해 vi 편집기를 실행합니다.
다음의 부분을 검색 후 변경해 줍니다.
zlib와 마찮가지로 컴파일을 위해 해당 시스템에 맞도록 옵션을 변경해 줍니다.
그리고 Makefile을 다음과 같이 해당 구성을 변경합니다.
make와 make install을 통해 설정된 옵션과 수정된 makefile의 변경된 설정에 의해 컴파일및 설치가 됩니다.
다음 마지막 SSH 설치를 위해 컴파일 전 옵션을 설정합니다.
옵션 설정이 끝나면 지금까지 했던 것과 같은 방법으로 make 및 make install을 합니다.
하지만 지금까지와는 다르게 갑자기 오류가 발생하는 것을 발견할 수 있습니다.
이러한 3가지 오류가 발생하는데 이것은 arm용으로 컴파일 된 실행파일을타겟보드가 아닌 PC에서 실행시키려 했기 때문입니다.
따라서 그리 큰 문제는 아니므로 계속해서 진행을 하면 됩니다.
3. SSH 타겟 포팅
지금까지의 과정을 통해 HOST PC에 ZLIB, SSH, SSL의 설치가 완료 되었습니다.
또한 arm 기반의 타겟 보드를 위한 설정 변경및 컴파일이 완료된 상태로 이제 필요한 lib 파일및 SSH 및 여러 서비스의 이용을 위한 데몬의 전달을 통해 실제 타겟 보드에 SSH 데몬을 설치 하도록 하겠습니다.
먼저 파일의 원할한 전송 및 이동을 위해 HOST PC의 /share 디렉토리와 타겟 보드의 /mnt/nfs 디렉토리를 마운트를 통해 공유상태로 만든 후 다음의 파일을 /share로 복사를 하도록 하겠습니다.
우선 SSH를 구동하기 위해 필요한 lib파일을 이동하기 위해 zlib의 lib디렉토리로 이동 후 /share/openssh 디렉토리에 해당 파일을 복사하였습니다.
디렉토리를 보다 편하고 쉽게 알아 볼 수 있도록 /share 아래에 openssh 디렉토리를 생성하였습니다.
파일이 제대로 복사 되었는지 ls 명령을 통해 확인이 가능합니다.
또한 이렇게 복사된 파일은 타겟 보드 시스템의 lib파일이 저장되어 있는 실제 디렉토리인 /lib디렉토리로 한번도 복사를 해주도록 합니다.
그리고 SSH의 데몬 및 실행을 위한 파일들이 존재하는 HOST PC의 SSH 설치 디렉토리를 lib파일과 마찮가지로 /share 디렉토리로 복사합니다.
올바르게 복사되어 마운트 되어 있는 타겟 보드의 /mnt/nfs 디렉토리에 확인이 가능합니다.
SSH의 올바른 관리와 사용의 편리함을 위해 SSH디렉토리를 /아래로 복사한 후 nfs 디렉토리의 원본은 삭제하였습니다.
또한 SSH는 암호뿐만 아니라 공개키(Public key), 개인키(Private key) 기반의 인증을 제공하고 있으므로 어렵지 않게 구축할 수 있다. 참고로 공개키는 암호화를 위해 사용되며, 공개키에 매칭되는 개인키만으로 암호화된 메시지를 복호화할 수 있습니다.
이때 공개키/개인키를 생성하는 방법은 ssh-keygen을 사용하여 생성할 수 있습니다.
위와 같이 ssh-keygen을 통해 키를 생성할 수 있습니다.
key가 생성된 것을 확인할 수 있습니다.
/etc/ssh의 ssh_config와 sshd_config 파일을 수정하여, ssh가 기본적으로 사용할 port를 지정할 수 있습니다.
또한 protocol의 지정도 가능하며 이때 protocol 2로 설정한 서버는 버전 2로만 작동하기 때문에 ssh1을 사용해 접속을 요청하는 클라이언트를 받아 들일 수 없습니다.
만약 protocol 1로 설정해서 가동시킬 경우에는 버전 2를 사용하는 ssh2 사용자의 요청을 받아 들일 수 없습니다. 보안상 protocol 1 은 사용하지 않습니다.
마지막으로 SSH가 타겟 보드 부팅시 자동으로 start되기 위한 설정이 필요합니다.
이러한 구성을 위해 저희는 rcS파일을 수정하는 방법을 택하였습니다.
타겟 보드 시스템의 /etc/init.d 디렉토리에 있는 rcS파일을 다음과 같이 수정하였습니다.
다음과 같이 마지막 부분에 /openssh/sbin/sshd 데몬을 시작하는 구문을 넣음으로 인해 타겟 보드 시스템이 부팅시 sshd 데몬이 항상 작동하게 되었습니다.
4. SSH 서비스 테스트 및 보고서 작성
타겟 보드에서 HOST PC로의 SSH접속이 정상적으로 이루어 지는것을 확인할 수 있습니다.
반대로 HOST PC에서 타겟 보드로의 SSH 접속도 가능합니다.
양쪽 모두 SFTP의 접속 또한 가능합니다.
HOST PC에서 TEST 파일 생성 후 타겟 보드의 /TEST 디렉토리로 파일 전송 또한 가능합니다.
Ⅳ. 참고자료
- “Building Embedded Linux System"
- OpenSSH site (www.openssh.com)
- OpenSSL site (http://www.openssl.org)
- Zlib site (http://www.zlib.net/)
Ⅱ. 수행 일정
SSH 정보 수집 및 파일 다운로드
08. 10. 27 ~ 08. 10. 28
SSH HOST 설치 및 테스트
08. 10. 28 ~ 08. 10. 30
SSH 타겟 포팅
08. 10. 31 ~ 08. 11. 02
SSH 서비스 테스트 및 보고서 작성
08. 11. 02 ~ 08. 11. 04
Ⅲ. 수행 인원
1. SSH 정보 수집및 파일 다운로드
SSH 구성을 위한 openssh, openssl, zlib를 각각 다운로드하여 /pxa255/openssh에 다운로드 하였습니다.
2. SSH HOST 설치 및 테스트
1. tar와 압축을 풀고 해당 파일의 내용을 확인할 수 있습니다.
2. 타겟 시스템이 arm 기반의 보드이기 때문에 arm-linux-gcc 컴파일러를 통해 arm에서 동작 가능하도록 옵션을 설정합니다.
설치 디렉토리는 /openssh/build로 정했습니다.
3. 설정이 정상적으로 완료 되었습니다.
make를 통해 설정한 옵션대로 컴파일을 합니다.
컴파일된 파일을 실제로 install을 합니다.
다음으로 SSL을 설치하기전 Configure 파일을 수정하기 위해 vi 편집기를 실행합니다.
다음의 부분을 검색 후 변경해 줍니다.
zlib와 마찮가지로 컴파일을 위해 해당 시스템에 맞도록 옵션을 변경해 줍니다.
그리고 Makefile을 다음과 같이 해당 구성을 변경합니다.
make와 make install을 통해 설정된 옵션과 수정된 makefile의 변경된 설정에 의해 컴파일및 설치가 됩니다.
다음 마지막 SSH 설치를 위해 컴파일 전 옵션을 설정합니다.
옵션 설정이 끝나면 지금까지 했던 것과 같은 방법으로 make 및 make install을 합니다.
하지만 지금까지와는 다르게 갑자기 오류가 발생하는 것을 발견할 수 있습니다.
이러한 3가지 오류가 발생하는데 이것은 arm용으로 컴파일 된 실행파일을타겟보드가 아닌 PC에서 실행시키려 했기 때문입니다.
따라서 그리 큰 문제는 아니므로 계속해서 진행을 하면 됩니다.
3. SSH 타겟 포팅
지금까지의 과정을 통해 HOST PC에 ZLIB, SSH, SSL의 설치가 완료 되었습니다.
또한 arm 기반의 타겟 보드를 위한 설정 변경및 컴파일이 완료된 상태로 이제 필요한 lib 파일및 SSH 및 여러 서비스의 이용을 위한 데몬의 전달을 통해 실제 타겟 보드에 SSH 데몬을 설치 하도록 하겠습니다.
먼저 파일의 원할한 전송 및 이동을 위해 HOST PC의 /share 디렉토리와 타겟 보드의 /mnt/nfs 디렉토리를 마운트를 통해 공유상태로 만든 후 다음의 파일을 /share로 복사를 하도록 하겠습니다.
우선 SSH를 구동하기 위해 필요한 lib파일을 이동하기 위해 zlib의 lib디렉토리로 이동 후 /share/openssh 디렉토리에 해당 파일을 복사하였습니다.
디렉토리를 보다 편하고 쉽게 알아 볼 수 있도록 /share 아래에 openssh 디렉토리를 생성하였습니다.
파일이 제대로 복사 되었는지 ls 명령을 통해 확인이 가능합니다.
또한 이렇게 복사된 파일은 타겟 보드 시스템의 lib파일이 저장되어 있는 실제 디렉토리인 /lib디렉토리로 한번도 복사를 해주도록 합니다.
그리고 SSH의 데몬 및 실행을 위한 파일들이 존재하는 HOST PC의 SSH 설치 디렉토리를 lib파일과 마찮가지로 /share 디렉토리로 복사합니다.
올바르게 복사되어 마운트 되어 있는 타겟 보드의 /mnt/nfs 디렉토리에 확인이 가능합니다.
SSH의 올바른 관리와 사용의 편리함을 위해 SSH디렉토리를 /아래로 복사한 후 nfs 디렉토리의 원본은 삭제하였습니다.
또한 SSH는 암호뿐만 아니라 공개키(Public key), 개인키(Private key) 기반의 인증을 제공하고 있으므로 어렵지 않게 구축할 수 있다. 참고로 공개키는 암호화를 위해 사용되며, 공개키에 매칭되는 개인키만으로 암호화된 메시지를 복호화할 수 있습니다.
이때 공개키/개인키를 생성하는 방법은 ssh-keygen을 사용하여 생성할 수 있습니다.
위와 같이 ssh-keygen을 통해 키를 생성할 수 있습니다.
key가 생성된 것을 확인할 수 있습니다.
/etc/ssh의 ssh_config와 sshd_config 파일을 수정하여, ssh가 기본적으로 사용할 port를 지정할 수 있습니다.
또한 protocol의 지정도 가능하며 이때 protocol 2로 설정한 서버는 버전 2로만 작동하기 때문에 ssh1을 사용해 접속을 요청하는 클라이언트를 받아 들일 수 없습니다.
만약 protocol 1로 설정해서 가동시킬 경우에는 버전 2를 사용하는 ssh2 사용자의 요청을 받아 들일 수 없습니다. 보안상 protocol 1 은 사용하지 않습니다.
마지막으로 SSH가 타겟 보드 부팅시 자동으로 start되기 위한 설정이 필요합니다.
이러한 구성을 위해 저희는 rcS파일을 수정하는 방법을 택하였습니다.
타겟 보드 시스템의 /etc/init.d 디렉토리에 있는 rcS파일을 다음과 같이 수정하였습니다.
다음과 같이 마지막 부분에 /openssh/sbin/sshd 데몬을 시작하는 구문을 넣음으로 인해 타겟 보드 시스템이 부팅시 sshd 데몬이 항상 작동하게 되었습니다.
4. SSH 서비스 테스트 및 보고서 작성
타겟 보드에서 HOST PC로의 SSH접속이 정상적으로 이루어 지는것을 확인할 수 있습니다.
반대로 HOST PC에서 타겟 보드로의 SSH 접속도 가능합니다.
양쪽 모두 SFTP의 접속 또한 가능합니다.
HOST PC에서 TEST 파일 생성 후 타겟 보드의 /TEST 디렉토리로 파일 전송 또한 가능합니다.
Ⅳ. 참고자료
- “Building Embedded Linux System"
- OpenSSH site (www.openssh.com)
- OpenSSL site (http://www.openssl.org)
- Zlib site (http://www.zlib.net/)
소개글