분류 기타

Windows와 Linux 간의 SSH 연결 설정

컨텐츠 정보

  • 조회 612 (작성일 )

본문

오픈 소스 도구 인 PuTTY를 사용하여 Windows 시스템에서 Linux 시스템으로 SSH 연결을 설정합니다.

SSH (Secure Shell Protocol)는 Linux 세계에서 명령 줄을 통해 원격 시스템을 제어하는 ​​가장 일반적인 방법입니다. SSH는 진정한 Linux 원본이며 Windows 세계에서도 인기를 얻고 있습니다.

OpenSSH를 사용하여 Windows 시스템을 제어하는 ​​방법을 다루는 SSH에 대한 공식 Windows 문서도 있습니다.


이 기사에서는 널리 사용되는 오픈 소스 도구인 PuTTY를 사용하여 Windows 시스템에서 Fedora 33 Linux 시스템으로 SSH 연결을 설정하는 방법을 설명합니다.


SSH를 사용하는 방법 


SSH는 SSH 클라이언트가 SSH 서버에 대한 연결을 설정하는 클라이언트-서버 아키텍처를 사용합니다. SSH 서버는 일반적으로 시스템 데몬으로 실행되므로 SSHD라고도 합니다.

SSH 데몬과 함께 제공되지 않는 Linux 배포판은 거의 찾을 수 없습니다. Fedora 33에서 SSH 데몬이 설치되었지만 활성화되지 않았습니다.


SSH를 사용하여 가상 머신 또는 네트워크의 물리적 장치로 실행 중인 거의 모든 Linux 머신을 제어 할 수 있습니다. 일반적인 사용 사례는 Raspberry Pi를 포함한 임베디드 장치의 헤드리스 구성입니다.

SSH를 사용하여 다른 네트워크 서비스를 터널링 할 수도 있습니다. SSH 트래픽이 암호화되기 때문에 기본적으로 암호화를 제공하지 않는 모든 프로토콜에 대한 전송 계층으로 SSH를 사용할 수 있습니다.


이 기사에서는 SSH를 사용하는 네 가지 방법에 대해 설명합니다. 1. Linux 측에서 SSH 데몬을 구성하는 방법, 2. 원격 콘솔 연결을 설정하는 방법, 3. 네트워크를 통해 파일을 복사하는 방법, 4 . SSH를 통해 특정 프로토콜을 터널링하는 방법.


1. SSHD 구성 


Linux 시스템 (제 경우에는 Fedora 33)이 PuTTY SSH 클라이언트를 연결할 수 있도록 하는 SSH 서버 역할을 합니다. 먼저 데몬의 SSH 구성을 확인하십시오.

구성 파일은 /etc/ssh/sshd_config에 있으며 관련 행을 주석 처리하여 활성화 할 수 있는 많은 스위치를 포함합니다.


#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress :: 


주석이 없는 줄이 없는 기본 구성이 이 예에서 작동합니다. systemctl status sshd를 입력하여 SSH 데몬이 이미 실행 중인지 확인합니다.


$ systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 577 (sshd)
    Tasks: 1 (limit: 26213)
   CGroup: /system.slice/sshd.service
           └─577 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-[...] 



비활성 상태이면 systemctl start sshd 명령으로 시작합니다.


2. 원격 콘솔 설정 


Windows에서 PuTTY 설치 프로그램을 다운로드 한 다음 설치하고 엽니다. 다음과 같은 창이 나타납니다.


PuTTY configuration screen 


호스트 이름 (또는 IP 주소) 입력 필드에 Linux 시스템의 연결 정보를 입력하십시오.

이 예에서는 IP 주소 192.168.1.60에서 시스템에 연결하는 데 사용할 수 있는 브리지 네트워크 어댑터로 Fedora 33 가상 머신을 설정했습니다. 열기를 클릭하면 다음과 같은 창이 열립니다.

PutTTY security alert 


이것은 중간자 (man-in-the-middle) 공격을 방지하기 위한 SSH 보안 메커니즘입니다. 메시지의 지문은 Linux 시스템의 /etc/ssh/ssh_host_ed25519_key.pub.에있는 키와 일치해야 합니다. PuTTY는 키를 MD5 해시로 인쇄합니다.

진위 여부를 확인하려면 Linux 시스템으로 전환하고 명령 셸을 열고 다음을 입력합니다.


ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub 


출력은 PuTTY에 표시된 지문과 일치해야 합니다.


ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519) 


예를 클릭하여 PuTTY 보안 경고를 확인합니다. 호스트 시스템의 지문은 이제 Windows 레지스트리의 다음 위치에 있는 PuTTY 신뢰 목록에 있습니다.


HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys 


올바른 로그인 자격 증명을 입력하면 홈 디렉터리의 콘솔에 있어야 합니다.


Logged in to SSH 


3. 네트워크를 통해 파일 복사 


원격 콘솔 외에도 PuTTY를 사용하여 SSH를 통해 파일을 전송할 수 있습니다. C : \\ Program Files (x86) \\ PuTTY 아래의 설치 폴더에서 pscp.exe를 찾습니다. 이를 사용하여 Linux 시스템에서 파일을 복사 할 수 있습니다.


Windows + R로 명령 프롬프트를 열고 cmd를 입력합니다. 다음을 입력하여 Linux 사용자 홈 디렉토리에서 Windows 홈 디렉토리로 MyFile.txt 파일을 복사합니다.


C:\"Program Files (x86)"\PuTTY\pscp.exe stephan@192.168.1.60:/home/stephan/MyFile.txt . 


Windows 홈 디렉토리에서 Linux 사용자 홈 디렉토리로 파일을 복사하려면 다음을 입력하십시오.


C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt stephan@192.168.1.60:/home/stephan/ 


이미 알고 있듯이 복사 명령의 일반적인 구조는 다음과 같습니다.


pscp.exe <source> <target> 


4. 프로토콜 터널링 


임의의 애플리케이션에 대해 HTTP 기반 서비스를 실행하는 Linux 시스템이 있다고 가정 해보십시오. 인터넷을 통해 Windows 시스템에서 이 HTTP 서비스에 액세스하려고 합니다.

물론 다음과 같은 이유로 관련 TCP 포트를 공개 할 수 없습니다.


  • 서버가 HTTPS가 아닌 HTTP를 실행 중입니다.
  • 사용자 관리나 로그인이 전혀 없습니다.

언뜻 보기에 끔찍한 보안 결함없이 이 아키텍처를 설정하는 것은 불가능한 작업처럼 보입니다. 그러나 SSH를 사용하면 이 시나리오에 대한 안전한 솔루션을 비교적 쉽게 설정할 수 있습니다.


내 소프트웨어 프로젝트 Pythonic으로 이 절차를 시연합니다. 컨테이너로 실행되는 Pythonic은 TCP 포트 7000 (기본 편집기)과 TCP 포트 8000 (코드 서버 소스 코드 편집기)의 두 가지 TCP 포트를 노출합니다.


Linux 머신에 Pythonic을 설치하려면 다음을 실행하세요.


podman pull pythonicautomation/pythonic
podman run -d -p 7000:7000 -p 8000:8000 pythonic 


Windows 머신으로 전환하고 PuTTY를 열고 연결-> SSH-> 터널로 이동합니다. 전달할 두 개의 TCP 포트를 추가합니다.


  • Source: 7000 / Destination: localhost:7000
  • Source: 8000 / Destination: localhost:8000

Port forwarding in PuTTY 


그런 다음 세션 섹션으로 돌아가서 이전과 마찬가지로 SSH 연결을 설정합니다. 브라우저를 열고 http://localhost:7000으로 이동합니다. 다음과 같은 화면이 표시되어야 합니다.


Pythonic 

포트 포워딩을 성공적으로 구성했습니다!


경고 : TCP 포트 22를 공개적으로 공개하는 경우 추측하기 쉬운 로그인 자격 증명을 사용하지 마십시오. 일반적인 표준 자격 증명으로 Linux 컴퓨터에 액세스하려는 전 세계의 로그인 시도를 받게 됩니다.

대신 알려진 클라이언트 만 로그인하도록 허용하십시오.이 로그인 제한은 공개 키가 SSH 호스트 시스템에 저장되고 개인 키가 클라이언트에 남아있는 키 쌍을 사용하는 공개 키 암호화를 사용하여 달성 할 수 있습니다.


Debugging 


Linux 시스템에 연결하는 데 어려움을 겪고 있다면 다음을 사용하여 SSH 데몬의 프로세스를 따를 수 있습니다.


journalctl -f -u sshd 


LogLevel DEBUG를 사용하는 일반적인 로그인 프로세스는 다음과 같습니다.


LogLevel DEBUG output 


더 알아보기 


이 기사는 SSH를 사용하는 방법에 대한 표면을 거의 긁지 않았습니다. 특정 사용 사례에 대한 정보를 찾고 있다면 인터넷의 수많은 SSH 자습서에서 찾을 수 있습니다.

저는 PuTTY를 직장에서 많이 사용합니다. PuTTY의 쉬운 구성과 운영 체제 간의 우수한 상호 운용성이 연결 솔루션을 위한 Swiss Army 칼 도구가 되기 때문입니다.


https://opensource.com/article/21/6/ssh-windows


SSH