기계적 인조 인간

ssh 구성 파일 사용

PSY - GANGNAM STYLE (ê°-ë-¨ì-¤í--ì-¼) M_V ( chipmunks Version)

PSY - GANGNAM STYLE (ê°-ë-¨ì-¤í--ì-¼) M_V ( chipmunks Version)

차례:

Anonim

한 가지 옵션은 각 원격 서버 연결에 대해 bash 별명을 작성하는 것입니다. 그러나이 문제에 대한 또 다른 훨씬 더 좋고 간단한 해결책이 있습니다. OpenSSH를 사용하면 연결하는 각 원격 시스템에 대해 서로 다른 SSH 옵션을 저장할 수있는 사용자 별 구성 파일을 설정할 수 있습니다.

이 안내서는 SSH 클라이언트 구성 파일의 기본 사항을 설명하고 가장 일반적인 구성 옵션 중 일부를 설명합니다.

전제 조건

OpenSSH 클라이언트가 설치된 Linux 또는 macOS 시스템을 사용하고 있다고 가정합니다.

SSH 구성 파일 위치

OpenSSH 클라이언트 측 구성 파일의 이름은 config 이며 사용자의 홈 디렉토리 아래 .ssh 디렉토리에 저장됩니다.

~/.ssh 디렉토리는 사용자가 ssh 명령을 처음 실행할 때 자동으로 작성됩니다. 시스템에 디렉토리가 없으면 아래 명령을 사용하여 디렉토리를 작성하십시오.

mkdir -p ~/.ssh && chmod 700 ~/.ssh

기본적으로 SSH 구성 파일이 존재하지 않을 수 있으므로 touch 명령을 사용하여 작성해야합니다.

touch ~/.ssh/config

이 파일은 사용자 만 읽고 쓸 수 있어야하며 다른 사람이 액세스 할 수 없어야합니다.

chmod 600 ~/.ssh/config

SSH 구성 파일 구조 및 패턴

SSH 구성 파일은 다음 구조를 갖습니다.

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

SSH 클라이언트 구성 파일의 내용은 스탠자 (섹션)로 구성됩니다. 각 스탠자는 Host 지정 문으로 시작하며 원격 SSH 서버와 연결을 설정할 때 사용되는 특정 SSH 옵션을 포함합니다.

들여 쓰기는 필요하지 않지만 파일을보다 쉽게 ​​읽을 수 있도록하는 것이 좋습니다.

Host 지시문은 하나의 패턴 또는 공백으로 구분 된 패턴 목록을 포함 할 수 있습니다. 각 패턴은 0 개 이상의 공백이 아닌 문자 또는 다음 패턴 지정자 중 하나를 포함 할 수 있습니다.

  • * -0 개 이상의 문자와 일치합니다. 예를 들어 Host * 는 모든 호스트와 일치하고 192.168.0.* 192.168.0.0/24 서브넷의 호스트와 일치합니다. ? -정확히 하나의 문자와 일치합니다. Host 10.10.0.? 패턴 10.10.0. 모든 호스트와 일치합니다 10.10.0. 범위. ! -패턴의 시작 부분에서 사용될 때 일치를 무효화합니다. 예를 들어 Host 10.10.0.* !10.10.0.5 10.10.0.0/24 제외한 10.10.0.5 서브넷의 모든 호스트와 일치합니다.

SSH 클라이언트는 스탠자별로 구성 파일 스탠자를 읽고, 둘 이상의 패턴이 일치하면 첫 번째 일치하는 스탠자의 옵션이 우선합니다. 따라서 파일의 시작 부분에 더 많은 호스트 별 선언을 제공하고 파일의 끝에 더 일반적인 재정의를 제공해야합니다.

터미널에 man ssh_config 를 입력하거나 ssh_config 매뉴얼 페이지를 방문하여 사용 가능한 ssh 옵션의 전체 목록을 찾을 수 있습니다.

SSH 구성 파일은 scp , sftp rsync 와 같은 다른 프로그램에서도 읽습니다.

SSH 구성 파일 예

이제 SSH 구성 파일의 기본 내용을 다루었으므로 다음 예를 살펴 보겠습니다.

일반적으로 SSH를 통해 원격 서버에 연결할 때 원격 사용자 이름, 호스트 이름 및 포트를 지정합니다. 예를 들어, john 이라는 사용자로 명령 행에서 포트 2322 dev.example.com 이라는 호스트에 로그인하려면 다음을 입력하십시오.

ssh [email protected] -p 2322

단순히 ssh dev 를 입력하여 위 명령에서 제공 한 것과 동일한 옵션을 사용하여 서버에 연결하려면 "~/.ssh/config 파일에 다음 행을 넣으십시오.

~ /.ssh / config

Host dev HostName dev.example.com User john Port 2322

이제 ssh dev 를 입력하면 ssh 클라이언트가 구성 파일을 읽고 dev 호스트에 지정된 연결 세부 사항을 사용합니다.

ssh dev

공유 SSH 구성 파일 예

이 예는 호스트 패턴 및 옵션 우선 순위에 대한 자세한 정보를 제공합니다.

다음 예제 파일을 보자.

Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes

  • ssh targaryen 을 입력하면 ssh 클라이언트가 파일을 읽고 첫 번째 일치 항목 ( Host targaryen 에서 옵션을 적용합니다. 그런 다음 일치하는 패턴이 있는지 다음 스탠자를 하나씩 점검합니다. 다음으로 일치하는 것은 Host * !martell ( martell 제외한 모든 호스트를 의미 함) martell 스탠자의 연결 옵션을 적용합니다. 마지막 정의 Host * 도 일치하지만 User 옵션이 Host targaryen 스탠자에 이미 정의되어 있으므로 ssh 클라이언트는 Compression 옵션 만 사용합니다.

    ssh targaryen 을 입력 할 때 사용되는 전체 옵션 목록은 다음과 같습니다.

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    ssh tyrell 실행할 때 일치하는 호스트 패턴은 Host tyrell , Host *ell , Host * !martell Host * 입니다. 이 경우에 사용되는 옵션은 다음과 같습니다.

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    다른 모든 연결의 경우 ssh 클라이언트는 Host * !martell Host * 섹션에 지정된 옵션을 사용합니다.

SSH 구성 파일 무시 옵션

ssh 클라이언트는 다음 우선 순위에 따라 구성을 읽습니다.

  1. 명령 줄에서 지정한 옵션 ~/.ssh/config 정의 된 옵션. /etc/ssh/ssh_config 정의 된 옵션

Host dev HostName dev.example.com User john Port 2322

다른 모든 옵션을 사용하고 john 대신 사용자 root 로 연결하려면 명령 줄에 사용자를 지정하면됩니다.

ssh -o "User=root" dev

-F ( configfile ) 옵션을 사용하면 대체 사용자 별 구성 파일을 지정할 수 있습니다.

ssh 클라이언트가 ssh 구성 파일에 지정된 모든 옵션을 무시하도록하려면 다음을 사용하십시오.

ssh -F /dev/null [email protected]

결론

사용자 ssh 구성 파일을 구성하는 방법을 보여주었습니다. SSH 키 기반 인증을 설정하고 비밀번호를 입력하지 않고 Linux 서버에 연결할 수도 있습니다.

기본적으로 SSH는 포트 22에서 수신 대기합니다. 기본 SSH 포트를 변경하면 자동 공격의 위험을 줄임으로써 서버에 추가적인 보안 계층이 추가됩니다.

ssh 터미널