ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SSH란?
    coding 2023. 5. 10. 23:35

    SSH는 "Secure Shell"의 약자입니다.

    SSH는 원격 컴퓨터에 안전하게 접근하고 명령을 실행하거나 파일을 전송하는 데 사용되는 네트워크 프로토콜입니다. SSH는 암호화를 사용하여 데이터를 보호하므로, 네트워크를 통해 전송되는 정보는 외부에서 접근하거나 읽을 수 없습니다.

    SSH는 원격 서버의 관리, 파일 전송, 네트워크 서비스의 터널링 등 다양한 용도로 사용되며, 일반적으로 UNIX 및 Linux 시스템에서 사용됩니다. SSH 클라이언트와 서버 소프트웨어는 대부분의 UNIX 기반 시스템에 기본적으로 포함되어 있으며, Windows 시스템에서도 사용할 수 있는 SSH 클라이언트가 있습니다.


    1) 원격 서버에 데이터 올리고 돌리기 

    VS Code를 사용하여 SSH로 원격 GPU 서버에 접속한 상태에서 로컬 코드와 데이터를 돌리려면, 우선 로컬의 코드와 데이터를 원격 서버로 옮겨야 합니다. 그리고 원격 서버에서 실행해야 합니다.

    아래는 간단한 단계를 설명합니다:

    1. **파일 전송** - SCP(Secure Copy)나 rsync 등의 도구를 사용하여 로컬에서 원격 서버로 코드와 데이터를 복사합니다. 예를 들어 다음과 같은 명령어를 사용할 수 있습니다:


    scp -P 22000 /path/to/local/data yourusername@hostname:/path/to/remote/directory


        이 때, `/path/to/local/data`는 로컬에서 전송할 데이터의 경로이며, `yourusername@hostname`는 원격 서버의 사용자 이름과 호스트 이름입니다. `/path/to/remote/directory`는 원격 서버에서 파일을 저장할 디렉토리의 경로입니다.

    2. **원격 서버에서 코드 실행** - 이제 로컬의 코드와 데이터가 원격 서버에 있으므로, VS Code의 Remote - SSH 확장 기능을 사용하여 원격 서버에 연결하고 코드를 실행할 수 있습니다. 

        이때 Tensorflow 코드에서 GPU를 활용하려면 특정 코드를 사용해야 합니다. 아래는 간단한 예시입니다:

        import tensorflow as tf
    
        # GPU가 제대로 인식되고 사용 가능한지 확인
        physical_devices = tf.config.list_physical_devices('GPU') 
        print("Num GPUs Available: ", len(physical_devices))
    
        # 필요한 경우 메모리 성장을 허용
        for device in physical_devices:
            tf.config.experimental.set_memory_growth(device, True)
    
        # 이후의 코드...



    이 방법을 통해 로컬에서 작성한 코드와 데이터를 원격 GPU 서버에서 실행할 수 있습니다. 이 방법은 원격 GPU 서버를 활용하여 고성능 계산 작업을 수행하는데 유용합니다.

     

    원격 서버로 데이터를 옮기는 것은 원격 서버의 파일 시스템에 파일을 직접 복사하는 것을 말합니다. 이는 파일을 원격 서버에 영구적으로 저장하는 것이며, 코드 실행이 끝나도 파일은 원격 서버에 남아 있습니다. 

     


    2) 로컬 컴퓨터에서 마운트 하기

     

    원격 서버에 로컬 파일 시스템을 마운트하려면, 일반적으로 SSHFS (SSH File System)와 같은 도구를 사용합니다. 이 방법은 원격 서버가 로컬 파일 시스템에 직접 접근하도록 해주는 방식입니다.

     

    SSHFS를 사용하려면 먼저 로컬 시스템에 SSHFS를 설치해야 합니다. 윈도우에서 SSHFS를 사용하려면, WinFsp와 SSHFS-Win을 설치해야 합니다.

    1. WinFsp 설치: WinFsp는 파일 시스템 프록시 서비스를 제공하는 Windows 라이브러리입니다. WinFsp 공식 다운로드 페이지(https://github.com/billziss-gh/winfsp/releases)에서 최신 버전의 WinFsp를 설치할 수 있습니다.
    2. SSHFS-Win 설치: SSHFS-Win은 SSHFS를 Windows에서 사용할 수 있도록 하는 도구입니다. SSHFS-Win 공식 다운로드 페이지(https://github.com/billziss-gh/sshfs-win/releases)에서 최신 버전의 SSHFS-Win을 설치할 수 있습니다.
    3. 원격 서버 마운트: 이제 다음과 같은 명령어를 실행하여 원격 서버를 마운트할 수 있습니다. 이 명령어는 PowerShell 또는 cmd에서 실행해야 합니다.
    net use X: \\sshfs\yourusername@hostname..\path\to\remote\directory

    이 때, X:는 로컬에서 사용할 드라이브 문자입니다. yourusername@hostname는 원격 서버의 사용자 이름과 호스트 이름입니다. \path\to\remote\directory는 원격 서버에서 접근할 디렉토리의 경로입니다.

    이제 로컬 컴퓨터에서 X: 드라이브로 접근하면, 원격 서버의 디렉토리에 접근할 수 있습니다. 이 방법으로 로컬의 코드와 데이터를 원격 서버에서 직접 사용할 수 있습니다.

     

    더보기

    SSHFS를 사용하면 원격 Linux 서버의 디렉토리를 Windows 로컬 시스템에 마운트하여 마치 로컬 파일 시스템의 일부인 것처럼 사용할 수 있습니다. 이렇게 하면 VS Code와 같은 편집기에서 원격 서버에 있는 파일을 직접 편집하거나, 로컬에서 실행하는 것처럼 원격 서버에서 코드를 실행할 수 있습니다.

    이 방법은 원격 서버에 접근하기 위해 VPN을 설정하거나, 원격 데스크톱을 사용하는 것보다 더 간편하며, 또한 원격 서버의 리소스를 직접 활용할 수 있어서 고성능 계산 작업에 유용합니다.

    그러나 SSHFS를 사용할 때는 네트워크 지연에 주의해야 합니다. 원격 서버가 물리적으로 멀리 떨어져 있거나, 네트워크 연결이 불안정한 경우 파일 전송 속도가 느려질 수 있습니다. 이런 경우 원격 서버에 파일을 먼저 복사하거나, 다른 파일 전송 방법을 사용하는 것이 좋습니다.

    'coding' 카테고리의 다른 글

    MATLAB_ 병렬 컴퓨팅 명령어`parfor`와 `parpool` 비교  (0) 2023.05.31
    매트랩(Matlab)에서 "툴박스(Toolbox)"와 "앱(App)"  (0) 2023.05.30
    Python 과 Anaconda  (0) 2023.05.21
    터미널과 쉘의 차이  (0) 2023.05.21
    pip on python  (0) 2023.05.09
Designed by Tistory.