기계적 인조 인간

SSH 명령

Основы SSH

Основы SSH

차례:

Anonim

SSH (Secure Shell)는 클라이언트와 서버 간의 암호화 된 연결에 사용되는 암호화 네트워크 프로토콜입니다. ssh 클라이언트는 원격 시스템의 SSH 서버에 대한 보안 연결을 작성합니다. 암호화 된 연결을 사용하여 서버, X11 터널링, 포트 전달 등에서 명령을 실행할 수 있습니다.

무료 및 상용 SSH 클라이언트가 많이 있으며 OpenSSH가 가장 널리 사용되는 클라이언트입니다. Linux, OpenBSD, Windows, macOS 및 기타를 포함한 모든 주요 플랫폼에서 사용할 수 있습니다.

OpenSSH 명령 행 클라이언트 ( ssh )를 사용하여 원격 시스템에 로그인하고 명령을 실행하거나 다른 조작을 수행하는 방법에 대해 설명합니다.

OpenSSH 클라이언트 설치

OpenSSH 클라이언트 프로그램은 ssh 라고하며 터미널에서 호출 할 수 있습니다. OpenSSH 클라이언트 패키지는 ssh 명령과 함께 설치되는 scp sftp 와 같은 다른 SSH 유틸리티도 제공합니다.

Linux에서 OpenSSH 클라이언트 설치

OpenSSH 클라이언트는 기본적으로 대부분의 Linux 배포에 사전 설치되어 있습니다. 시스템에 ssh 클라이언트가 설치되어 있지 않은 경우 배포판의 패키지 관리자를 사용하여 설치할 수 있습니다.

우분투 및 데비안에서 OpenSSH 설치

sudo apt update sudo apt install openssh-client

CentOS 및 Fedora에 OpenSSH 설치

sudo dnf install openssh-clients

Windows 10에 OpenSSH 클라이언트 설치

대부분의 Windows 사용자는 Putty를 사용하여 SSH를 통해 원격 시스템에 연결합니다. 그러나 최신 버전의 Windows 10에는 OpenSSH 클라이언트 및 서버가 포함되어 있습니다. 두 패키지 모두 GUI 또는 PowerShell을 통해 설치할 수 있습니다.

OpenSSH 패키지의 정확한 이름을 찾으려면 다음 명령을 입력하십시오.

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

명령은 다음과 같은 것을 반환해야합니다.

Name: OpenSSH.Client~~~~0.0.1.0 State: NotPresent Name: OpenSSH.Server~~~~0.0.1.0 State: NotPresent

패키지 이름을 알고 나면 다음을 실행하여 설치하십시오.

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

성공하면 출력은 다음과 같습니다.

Path: Online: True RestartNeeded: False

macOS에 OpenSSH 클라이언트 설치

macOS는 기본적으로 OpenSSH 클라이언트가 설치되어 제공됩니다.

ssh 명령을 사용하는 방법

SSH를 통해 원격 시스템에 로그인하려면 다음 요구 사항이 충족되어야합니다.

  • SSH 서버는 원격 시스템에서 실행되고 있어야합니다. SSH 포트는 원격 시스템 방화벽에서 열려 있어야합니다. 원격 계정의 사용자 이름과 비밀번호를 알고 있어야합니다. 계정에는 원격 로그인을위한 적절한 권한이 있어야합니다.

ssh 명령의 기본 구문은 다음과 같습니다.

ssh:HOST

ssh 명령을 사용하려면 터미널 또는 PowerShell을 열고 ssh 와 원격 호스트 이름을 차례로 입력하십시오.

ssh ssh.linuxize.com

SSH를 통해 원격 컴퓨터에 처음 연결하면 아래와 같은 메시지가 표시됩니다.

The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established. ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY. Are you sure you want to continue connecting (yes/no)?

각 호스트에는 ~/.ssh/known_hosts 파일에 저장된 고유 한 지문이 있습니다.

원격 지문을 저장하려면 yes 를 입력하면 암호를 입력하라는 메시지가 표시됩니다.

Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts. [email protected]'s password:

비밀번호를 입력하면 원격 시스템에 로그인됩니다.

사용자 이름을 지정하지 않으면 ssh 명령은 현재 시스템 로그인 이름을 사용합니다.

다른 사용자로 로그인하려면 사용자 이름과 호스트를 다음 형식으로 지정하십시오.

ssh username@hostname

사용자 이름은 -l 옵션과 함께 지정할 수도 있습니다.

ssh -l username hostname

기본적으로 포트가 제공되지 않으면 SSH 클라이언트는 포트 22의 원격 서버에 연결을 시도합니다. 일부 서버에서는 관리자가 서버에 보안 계층을 추가하여 기본 SSH 포트를 변경하여 자동 공격.

기본이 아닌 포트에 연결하려면 -p 옵션을 사용하여 포트를 지정하십시오.

ssh -p 5522 username@hostname

ssh -v username@hostname

상세 레벨을 높이려면 -vv 또는 -vvv .

ssh 명령은 많은 옵션을 허용합니다.

모든 옵션의 전체 목록을 보려면 터미널에 man ssh 를 입력하여 ssh 매뉴얼 페이지를 읽으십시오.

SSH 구성 파일

OpenSSH 클라이언트는 사용자 별 구성 파일 ( ~/.ssh/config )에 설정된 옵션을 읽습니다. 이 파일에는 연결하는 각 원격 시스템에 대해 서로 다른 SSH 옵션을 저장할 수 있습니다.

샘플 SSH 구성은 다음과 같습니다.

Host dev HostName dev.linuxize.com User mike Port 4422

ssh dev 를 입력하여 ssh 클라이언트를 호출하면 명령이 ~/.ssh/config 파일을 읽고 dev 호스트에 지정된 연결 세부 사항을 사용합니다. 이 예에서 ssh dev 는 다음과 같습니다.

ssh -p 4422 [email protected]

자세한 내용은 SSH 구성 파일 기사를 확인하십시오.

공개 키 인증

SSH 프로토콜은 다양한 인증 메커니즘을 지원합니다.

공개 키 기반 인증 메커니즘을 사용하면 비밀번호를 입력하지 않고도 원격 서버에 로그인 할 수 있습니다.

이 방법은 인증에 사용되는 암호화 키 쌍을 생성하여 작동합니다. 개인 키는 클라이언트 장치에 저장되며 공개 키는 로그인하려는 각 원격 서버로 전송됩니다. 원격 서버는 키 인증을 허용하도록 구성되어야합니다.

ssh-keygen -t rsa -b 4096 -C "[email protected]"

보안 암호를 입력하라는 메시지가 표시됩니다. 암호 구 사용 여부는 전적으로 귀하에게 달려 있습니다.

키 페어가 있으면 공개 키를 원격 서버에 복사하십시오.

ssh-copy-id username@hostname

원격 사용자 비밀번호를 입력하면 공개 키가 원격 사용자 authorized_keys 파일에 추가됩니다.

키가 업로드되면 비밀번호를 묻지 않고 원격 서버에 로그인 할 수 있습니다.

키 기반 인증을 설정하면 로그인 프로세스를 단순화하고 전체 서버 보안을 강화할 수 있습니다.

포트 포워딩

SSH 터널링 또는 SSH 포트 전달은 서비스 포트를 릴레이 할 수있는 클라이언트와 서버 시스템간에 암호화 된 SSH 연결을 작성하는 방법입니다.

SSH 전달은 VNC 또는 FTP와 같은 암호화되지 않은 프로토콜을 사용하는 서비스의 네트워크 데이터를 전송하거나 지역 제한 콘텐츠에 액세스하거나 중간 방화벽을 우회하는 데 유용합니다. 기본적으로 모든 TCP 포트를 전달하고 보안 SSH 연결을 통해 트래픽을 터널링 할 수 있습니다.

SSH 포트 전달에는 세 가지 유형이 있습니다.

로컬 포트 ​​포워딩

로컬 포트 ​​전달을 사용하면 클라이언트 호스트에서 SSH 서버 호스트로 연결 한 다음 대상 호스트 포트로 연결을 전달할 수 있습니다.

로컬 포트 ​​전달을 작성하려면 -L 옵션을 ssh 클라이언트에 전달하십시오.

ssh -L LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname

-f 옵션은 ssh 명령이 백그라운드에서 실행되고 -N 은 원격 명령을 실행하지 않도록 지시합니다.

원격 포트 포워딩

원격 포트 전달은 로컬 포트 ​​전달과 반대입니다. 서버 호스트에서 클라이언트 호스트로 포트를 전달한 다음 대상 호스트 포트로 포트를 전달합니다.

-L 옵션은 ssh 에 원격 포트 전달을 작성하도록 지시합니다.

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname

동적 포트 포워딩

동적 포트 전달은 다양한 포트에서 통신 할 수있는 SOCKS 프록시 서버를 작성합니다.

SOCKS (동적 포트 전달)를 작성하려면 -D 옵션을 ssh 클라이언트에 전달하십시오.

ssh -D LOCAL_PORT -N -f username@hostname

자세한 내용과 단계별 지침은 SSH 터널링 설정 방법 (포트 전달) 문서를 확인하십시오.

결론

SSH를 통해 원격 서버에 연결하려면 ssh 명령과 원격 사용자 이름 및 호스트 이름 ( ssh username@hostname )을 사용하십시오.

ssh 명령을 사용하는 방법을 아는 것은 원격 서버 관리에 필수적입니다.

ssh 터미널