ubuntu를 이용한 딥러닝 Server 설치하기 2
서버에 원격 접속하기와 원격 파일 전송하기
Installation of Ubuntu 18.04 LTS for Deep Learning Computer -2
Ubuntu with mac, 원격 접속 연결하기
간밤에 평안하셨습니까? 지난번까지는 ubuntu설치를 열심히 했고, 원격 접속은 쉽게 해결할 것이라고 생각하며 가볍게 노트북을 열어서 신나게 원격접속 연결을 시도했습니다. 퇴근 후에 저녁을 먹고 여유롭게 9시부터 만지기 시작했는데, 어느새 11시가 넘어가고 새벽 1시가 넘어가곤 했습니다. 그렇게 며칠을 지내고서야 맥북으로 ubuntu서버에 접속을 할 수 있었습니다.
이번 글을 쓰기 까지 간밤에 한 일들은 다음과 같습니다.
- ubuntu 인터넷 연결
- KT 공유기 고정 아이피 설정
- 포트 포워딩
- 원격 접속
- 원격 파일 전송
- nvidia 그래픽 드라이버 설치
- Cuda 설치
- CuDnn 설치
- tensorflow, keras 설치
- jupyter notebook 연결
각 단계에서 다음 단계로 넘어가기 까지 우여곡절이 많았는데, 해결할때마다 은근 쾌감이 있어서 기분 좋았습니다. 리눅스, 그러니까 검은 화면만 보면 겁을 실컷 먹었었는데, 그 두려움을 극복해가는 스스로가 대견스럽다고 생각을 해봅니다.
이번 글은 ubuntu 인터넷 연결부터 원격 파일 전송까지가 되겠습니다. 가장 힘들었던 부분은 네트워크를 이해하지 못해서 삽질을 여러번해서 애먹었던 부분입니다. 이 부분은 KT 공유기 고정 아이피 설정에서 민낯을 샅샅이 밝힐 예정입니다.
1. ubuntu 인터넷 연결
저는 공유기에 있는 랜선을 서버용 컴퓨터에 끼워주면 알아서 인터넷 연결이 될 줄 알았지만 그렇지 않았습니다. 그런 것은 검은 화면이 아닌 곳에서나 가능하다는 것을 왜 그때는 제대로 깨닫지 못했을까요?
ubuntu 서버 화면으로 넘어가서 vi 편집기를 이용해 다음 명령어를 날려줍니다.
1 | vi /etc/network/interfaces |
그러면 무언가 입력할 것이 있는 창이 하나 나와 있을 것 입니다.
1 | # This file describes the network interfaces available on your system |
저의 경우에는 이렇게 들어있는 내용이 얼마 없었던 걸로 기억합니다.(당시에 경황이 없어서 화면 사진을 하나도 찍지 못했네요ㅜㅜ)ifconfig
명령어를 이용해 현재 이더넷의 주소를 알아내야합니다. 저의 경우에는 enpxxxx이었습니다. 이 값을 기억해두고 다시 interface로 들어가서
1 | # This file describes the network interfaces available on your system |
이런식으로 입력해 줍니다. 이 방식은 유동 ip일때 사용하는 방식이기는 하지만, 일단 인터넷 연결이 되어야 ubuntu 라이브러리를 받을 수 있기 때문에 설정해 줍니다.
설정이 다 되었다면
1 | sudo service networking restart |
를 이용해서 network를 재시작해 반영시켜줍니다.
2. KT 공유기 고정 ip 설정
이제 KT공유기의 ip를 고정시켜줄 차례입니다. 고정 아이피를 잡아주는 이유는 간단합니다. 외부 통신을 통해(예를 들어 맥북을 통해) 서버로 접속한다고 했을 때, 고정 ip가 잡혀있지 않다면, 동적 아이피로 인해 서버의 ip 주소는 계속 바뀔 것이고 결국 접속이 안될 것입니다.
정말 간단하게 설정할 수 있기 때문에 제가 보고 설정한 링크를 첨부해 놓겠습니다.
KT 공유기 고정IP 설정
이렇게 고정 ip를 잡아주고 난 뒤에 서버 컴퓨터로 와서 ifconfig 명령어를 쳐서 ip를 확인하고 설정한 ip대로 나온다면 성공입니다.
이제 아까 dhcp설정을 static으로 고쳐줄 차례입니다.
1 | vi /etc/network/interfaces |
명령어를 통해 수정할 부분으로 가서
1 | # The primary network interface |
이렇게 고쳐줍니다.
3. 포트포워딩
포트포워딩을 하는 이유는 외부에서 접속을 하게 될 때 공유기로 인해 내가 접속하고 싶은 컴퓨터를 제대로 연결을 못 해주게 됩니다. 공유기가 많은 컴퓨터에 대해서 ip를 뿌려주고 있기 때문입니다. 그래서 어떤 포트로 접속을 해줘야 내가 원하는 컴퓨터에 연결이 되는지를 알려줘야 제대로 연결을 할 수 있게 됩니다. 따라서 포트포워딩은 특정 컴퓨터에게 특정 포트로 연결해 주는 작업을 말하는 것입니다. 포트가 일종의 이정표 역할을 하게 되겠습니다.
다시 KT 홈허브 관리페이지로 가서 장치 설정에 트래픽 관리로 가면 바로 포트포워딩을 볼 수 있습니다. 포트 포워딩 설정에서 다른 건 건드리지 않고 외부/내부 포트, 내부 ip 주소만 작성해줍니다. 외부/내부 포트에는 내가 열고 싶은 포트 번호를 입력해주고, 내부 ip에서는 고정 ip를 넣어줍니다. 일단 8888포트를 열어줍니다.(jupyter notebook이 켜지는 포트가 주로 8888이니까 이렇게 설정을 했습니다)
사진출처
4. 원격접속
원격접속을 위해서 우리가 연결할 포트가 필요합니다. ssh접속은 22번 포트를 사용하고, 보통 처음 산 컴퓨터에는 이런 설정이 제대로 되어있지 않은 경우가 많습니다. 그렇기 때문에 직접 포트를 열어주도록 하겠습니다.
서버컴퓨터로 돌아와서
1 | sudo vi /etc/ssh/sshd_config |
명령어를 입력해 줍니다. 여기서 sshd_config가 없다면,
1 | apt-get install openssh-server |
를 통해 ssh를 설치해주면 됩니다.
sshd_config를 보면 Port라고 써있는 부분이 있습니다. 해당 라인이 #로 주석 처리 되어 있거나, 포트 넘버가 적혀있지 않은 경우에는, i를 눌러 insert모드로 바꾸고 port에 22를 넣어줍니다. 그리고 esc를 누르고 :wq(저장 후 종료)로 빠져나옵니다. 그러면 원격접속을 위한 준비는 끝났습니다.
이제 맥북으로 돌아와 터미널을 열어줍니다.
1 | ssh -p 22 [servername]@[ip address] |
이 명령어를 입력해주면 연결이 됩니다. ssh로 22번 포트에 접속해 준다는 것이고, 설정한 서버이름과 서버가 사용하는 ip주소를 입력해주고 설정한 비밀번호를 입력해주면
연결에 성공하게 됩니다.
(*주의, 혹시 집에서 노트북도 같은 아이피를 쓰고 있는 상태에서 연결을 시도하게 되면 100% 연결 성공했다고 나오게 된다. 공유기를 통해 내부적으로 연결이 되어 있기 때문이다. 정확한 확인을 위해서 잠시 노트북의 wifi를 끄고 테더링을 걸어서 다시 확인해보자, 이렇게 해서 연결이 된다면 진짜 된 것이다.)
5. 원격 파일 전송
원격 파일 전송은 로컬에 있는 파일을 서버에 보내고 싶을 때 혹은 서버에 있는 파일을 로컬로 가져오고 싶을 때 사용할 수 있습니다. 특히 Nvidia 그래픽 드라이버를 서버에 보내서 설치하고 싶을 때 아주 유용하게 사용할 수 있습니다.
scp를 사용해도 되고, sftp를 사용해도 된다.
개인적으로 sftp를 더 선호하기 때문에 sftp로 파일 전송하는 법을 간략히 설명해보면,
아까 원격접속을 했던 것과 마찬가지로
1 | sftp [servername]@[ip_address] |
앞에만 sftp로 바꿔주고 나머지는 똑같이 입력한다. 그러면 패스워드를 입력하라고 나오고 정상적으로 패스워드를 입력했다면 sftp> 로 시작하는 간단한 화면이 등장한다. sftp는 쉘을 오픈한 폴더 위치에서 시작하게 되므로 파일이 있는 위치로 이동한 다음 쉘을 여는 것을 권장한다.
여기서 put
명령어를 입력하고 보낼 파일이름을 끝까지 적으면, 서버에 파일이 전달되는 것을 확인할 수 있다.
이제 진짜 딥러닝 PC를 만들기 위한 기본 세팅이 끝났다. 퇴근 하고 집에와서 잠도 적게 자면서 연결했는데 생각보다 금방 끝나서, 그리고 회사에서도 연결이 되어서 뿌듯했었다. 이제 간밤에 악몽을 꾸게 만든 Nvidia 그래픽 드라이버 설치, CUDA 설치 그리고 CuDNN 설치가 남았다.
ubuntu를 이용한 딥러닝 Server 설치하기 2