SSH를 여는 방법. 기본 프로토콜. 연결이 비활성화된 경우 시간 초과

2 부.

시작하기 전에 루트 권한을 가진 새 사용자를 생성해 보겠습니다.

다음 명령을 사용하여 사용자 테스트에 권한을 할당해 보겠습니다.

usermod -a -G sudo 테스트

테스트 사용자가 sudo 그룹에 추가되었는지 확인하려면 다음 명령을 실행할 수 있습니다.


이제 로컬 네트워크와 인터넷을 통해 SSH(명령줄)를 통해 서버에 대한 원격 액세스를 설정해 보겠습니다.

SSH를 설치해보자

sudo apt-get 설치 openssh-서버

설치 후에는 연결 보안과 직접 ​​액세스를 구성해야 합니다. 설정 파일로 가보자

sudo nano /etc/ssh/sshd_config

기본적으로 ssh는 포트 22를 사용합니다. 이를 비표준 포트로 바꾸면 액세스 보안이 강화됩니다. 예를 들어 포트를 2200으로 바꾸겠습니다.

SSH를 통해 연결할 때 서버에는 비밀번호 대신 RSA 키가 필요합니다. 이러한 일이 발생하지 않도록 하려면 RSAAuthentication 및 PubkeyAuthentication 매개변수에 "NO"를 입력하세요. 또한 ROOT 사용자에 대한 액세스를 거부합니다. 이를 위해서는 Authetication: 매개변수의 주석 처리를 해제하고 PermitRootLogin 매개변수에 "NO"를 입력해야 합니다.

이제 사용자에게 액세스 권한을 할당해 보겠습니다.

AllowUsers 줄에는 user@host 형식으로 공백으로 구분하여 사용자를 입력합니다. 즉, 어떤 사용자가 어디서 연결할 수 있는지 나타냅니다. 당신이 사용할 수있는 *

사용자 테스트에 접근 권한을 부여하고 살펴보겠습니다.

    test@* - 사용자 테스트는 어디에서나 연결할 수 있습니다.
    [이메일 보호됨].* - 사용자 테스트는 192.168.0.0 서브넷에 있는 경우에만 연결할 수 있습니다.
    [이메일 보호됨]- 사용자 테스트는 IP 주소 192.168.0.104에서만 연결할 수 있습니다.
    *@192.168.0.* - 모든 사용자는 192.168.0.0 서브넷에 있는 동안 연결할 수 있습니다.

특정 사용자(예: test2 사용자)에 대한 액세스를 거부할 수도 있습니다. 이를 위해서는 아래에 입력해야 합니다.

발사하자

sudo /etc/init.d/ssh 시작

SSH를 구성했습니다. 이제 이에 대한 액세스를 열어 보겠습니다. 이를 위해 포트 2200에 대한 액세스를 엽니다.

마지막 부분에서는 arno-iptables-firewall 명령을 사용하여 방화벽을 설치했으므로 이제 이를 변경해야 합니다. 그럼 다시 구성해 보겠습니다.

sudo dpkg-arno-iptables-방화벽 재구성

설정이 시작되었습니다

열어야 하는 포트를 입력하세요. 다른 포트를 열어야 하는 경우 이 창에 다른 포트를 입력할 수도 있습니다.

다음 창에서는 포트 2200도 입력합니다.

포트를 입력한 후에는 어디에서나 Enter 키를 누르고 방화벽을 다시 시작할 수 있습니다.

그러면 네트워크에서 SSH 포트에 액세스할 수 있습니다.

SSH 연결의 보안을 강화하기 위해 거부 호스트 유틸리티를 구성할 수 있습니다. 이 유틸리티는 /var/log/auth.log 파일에서 ssh를 통해 서버에 로그인하려는 무단 로그인 시도 기록을 분석하고 이러한 시도가 이루어진 IP 주소를 /etc/hosts.deny 파일에 추가하는 Python 스크립트입니다. , SSH를 통한 로그인이 허용되지 않습니다.

명령으로 설치

sudo 적성 설치 거부 호스트

설치 직후 유틸리티는 /var/log/auth.log 파일을 스캔하고 비밀번호가 수집된 IP 주소를 /etc/hosts.deny에 추가합니다. /var/log/auth.log 파일에 해당 항목이 이미 많으면 검색에 시간이 걸립니다.

설치 후 구성 파일을 편집해야 합니다.

sudo nano /etc/denyhosts.conf

PURGE_DENY 설정을 3시간으로 조정해 보겠습니다. 그렇지 않으면 잘못된 비밀번호를 여러 번 입력하여 자신에 대한 액세스를 차단할 수 있습니다.

또한 제어를 위해 서버 액세스 시도 실패에 대한 알림을 보낼 이메일 주소를 지정해야 합니다.

ADMIN_EMAIL = [이메일 보호됨]대신에 [이메일 보호됨]당신의 이메일을 표시

새 설정을 적용하려면 거부 호스트 서비스를 다시 시작해야 합니다.

sudo 서비스 거부 호스트 다시 시작

추신 계정 비밀번호를 변경해야 하는 경우. 명령을 입력하세요

passwd user - user는 사용자 이름입니다.

추신 인코딩에 문제가 있는 경우 shh 클라이언트 프로그램의 설정을 살펴보세요.

SSH를 통한 작업에 가장 널리 사용되는 프로그램인 PuttY 프로그램입니다.

이 기사에서는 Linux, Windows 및 Mac에 SSH를 설치하는 방법, 구성 방법 및 사용 방법에 대해 설명합니다! 모든 세부 사항! 흥미로울 것입니다!

SSH는 Linux 및 Unix 커널을 기반으로 하는 운영 체제의 원격 제어(관리)에 널리 사용되는 프로토콜입니다. Linux 초보자의 경우 이 프로토콜을 어떻게 설치하고 구성하고 사용하는지 완전히 명확하지 않으므로 이를 해결하기 위해 이 기사를 작성하기로 결정했습니다!

Linux 커널에서 실행되는 가장 널리 사용되는 운영 체제 중 하나는 Ubuntu입니다. 따라서 이를 사용하여 ssh에 대해 설명하겠습니다.

먼저 Linux의 예를 사용하여 모든 단계를 설명하고 Mac 및 Windows에서 설명하겠습니다!

Linux OS에 SSH 설치

99.99%의 경우 Linux에는 원격 시스템에 연결할 수 있는 SSH 클라이언트가 이미 설치되어 있습니다. 하지만 현재 사용 중인 컴퓨터나 다른 컴퓨터에 연결하려면 "ssh 서버를 다운로드"해야 합니다.

이는 매우 쉽습니다. 필요한 모든 것이 이미 저장소(소프트웨어 저장소)에 있습니다. 터미널을 열고 다음 명령을 입력하세요.

Sudo 적절한 설치 openssh-서버

즉, 꼭 필요한 서버 부분, 이는 SSH 프로토콜을 통해 네트워크에서 컴퓨터에 액세스할 수 있게 해줍니다. 먹다 클라이언트 부분, 컴퓨터에 이미 설치되어 있으며 이를 사용하여 원격 컴퓨터에 연결합니다.

SSH를 통한 연결(비밀번호 사용)

터미널을 열고 다음 명령을 입력하여 원격 시스템에 연결합니다.

SSH 사용자 이름@IP 주소

먼저 ssh를 작성한 다음 원격 시스템에 있는 사용자 이름, @ 기호(개) 및 IP 주소를 작성합니다. 예를 들어:

SSH 사샤 @ 100.08.30.48

원칙적으로 ssh 연결은 포트 22에서 이루어지므로 강제로 변경할 경우에는 이를 지정해 주어야 합니다. 이렇게 하려면 끝에 -p number를 쓰십시오. 예는 다음과 같습니다.

SSH 사샤 @ 100.08.30.48 -피 3040

연결한 후 이것이 머신에 대한 첫 번째 연결인 경우 머신을 신뢰할 수 있는 머신에 추가해야 합니다. yes라고 입력하고 Enter를 누르십시오. 이것은 한 번 수행됩니다.

SSH 키를 생성하고 비밀번호 없이 연결하세요!

비밀번호를 기억하지 않고 매번 입력하지 않으려면, 특히 Linux 서버가 많은 경우 특수 SSH 키를 만들 수 있습니다. 이 키를 사용하면 비밀번호를 사용하지 않고도 이미 "알려진" 컴퓨터에서 "알려진" 서버로 연결할 수 있습니다.

SSH 키를 만드는 방법은 무엇입니까?

귀하가 현재 사용하고 있는 컴퓨터에 키를 생성한 후 이를 당사 서버에 복사해야 합니다!

현재 컴퓨터에 대한 키를 만듭니다.

SSH-keygen -t rsa

키가 생성되었으므로 이제 이를 원격 시스템이나 서버에 추가해야 합니다.

서버에 SSH 키를 추가하는 방법은 무엇입니까?

이렇게 하려면 다음 명령을 입력하십시오.

SSH-복사-ID 사용자 이름@IP 주소

SSH-복사-ID 사샤 @ 100.08.30.48

이제 키를 사용하지 않고 사용자 이름과 비밀번호만 입력하면 서버나 다른 컴퓨터에 연결할 수 있습니다!

Windows SSH 클라이언트

Windows에서 SSH를 통해 Linux 서버로 작업하는 데 가장 널리 사용되는 프로그램 중 하나는 Putty 프로그램입니다. 이 Windows SSH 클라이언트는 putty.org 주소에서 다운로드할 수 있습니다.

Windows에서 비밀번호를 사용하여 SSH를 통해 연결

SSH를 통해 Putty에 연결하는 것은 매우 쉽습니다! 포트를 변경한 경우 IP 주소를 입력한 다음 다른 포트를 지정하고 열기를 클릭하세요.
그리고 접속 후 로그인과 비밀번호!

Windows에서 키를 사용하여 SSH를 통해 연결

매번 비밀번호를 입력하고 싶지 않고 Putty에서 SSH 키를 사용한다면, Linux에서와 마찬가지로 먼저 키를 생성한 후 서버로 전송해야 합니다.

키 만들기


아직 프로그램을 닫지 말고 Putty를 실행하여 연결하세요.

키 전송


맥 SSH 클라이언트

macOS는 UNIX 시스템을 기반으로 하기 때문에 터미널에서 직접 SSH를 통해 접속할 수 있습니다!

비밀번호를 사용하지 않으려면 먼저 Homebrew를 설치해야 합니다.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

편리한 Mac SSH 클라이언트인 Termius도 있습니다.

Android 및 iOS용 SSH 클라이언트

iOS 및 Android용 가장 편리한 SSH 클라이언트는 Termius 애플리케이션입니다!

SSH(SCP)를 통해 파일 전송 및 다운로드

Linux 및 macOS에서 SSH를 통해 로컬 시스템의 파일을 서버에 업로드하려면 다음 안내를 따르세요.

SCP 파일1.tar root@ip_adress:/home/dir

서버에서 로컬 Linux 또는 macOS 컴퓨터로 파일을 복사합니다.

SCP 사용자 이름@ip_adress:/home/file1.tar /var/www/

서버에서 서버로:

SCP user@server_ip1:/home/file.txt user@server_ip2:/home/

윈도우의 경우

Windows에서 SSH를 통해 파일을 이동하려면 pscp가 사용됩니다.

pscp.exe 파일.zip root@ip_server: /var/www/

SSH 설정

SSH 로그인을 루트로 직접 추가해야 하는 경우:

SSH 포트 변경

기본적으로 SSH는 포트 22에 구성되어 있으므로 서버를 사용하는 것이 안전하지 않습니다. 따라서 포트를 변경하는 것이 좋습니다!

포트 값을 필수 값으로 변경하십시오.

# 포트 22를 수신하는 포트, IP 및 프로토콜

SSH 키만 사용하여 로그인:

nano를 사용하여 sshd_config 문서를 편집하고 다음 명령을 입력하십시오.

Sudo nano /etc/ssh/sshd_config

PasswordAuthentication 값을 yes에서 no로 변경합니다.

RSAAuthentication 예 PubkeyAuthentication 예 PasswordAuthentication 아니요

아직도 질문이 있나요? 댓글로 적어주시고, 무엇을 했는지 알려주세요. 반대의 경우도 마찬가지입니다!

그게 다야! 섹션에서 더 많은 유용한 기사와 지침을 읽어보세요. 사이트를 계속 이용하시면 더욱 흥미로울 것입니다!

SSH - (Secure Shell)은 Linux 운영 체제를 실행하는 컴퓨터를 원격 제어하기 위한 프로토콜입니다. SSH는 주로 터미널을 통해 원격으로 서버를 관리하는 데 사용됩니다. 여러 서버의 관리자이거나 고급 웹마스터라면 SSH를 통해 특정 컴퓨터로 작업해야 하는 경우가 종종 있을 것입니다. Linux에서는 이를 위해 클라이언트가 연결해야 하는 시스템과 클라이언트가 연결하는 시스템에서 SSH 서버가 사용됩니다.

이 가이드에서는 SSH를 사용하는 방법과 여러분이 몰랐던 기능도 살펴보겠습니다. SSH를 통해 서버에 연결하는 방법을 이미 알고 있을 가능성이 높지만 이 유틸리티에는 SSH 파일 전송, 비밀번호 없이 연결, 원격 서버에서 스크립트 실행 등 더 많은 기능이 있습니다. 이 기사의 뒷부분에서이 모든 것을 고려할 것입니다.

하지만 가장 기본적인 것부터 시작해 보겠습니다.

명령 구문은 다음과 같습니다.

$ssh [옵션] 사용자 이름@서버 [명령어]

SSH는 두 가지 버전의 프로토콜을 사용하여 작동할 수 있다는 점에 유의하는 것이 중요합니다. 버전 1과 2. 버전 2가 더 우수하고 더 많은 유형의 암호화 및 인증을 지원한다는 것은 분명합니다. 이 기사에서는 프로토콜 차이점에 대해 더 이상 설명하지 않으며 귀하가 버전 2를 사용하고 있다고 가정합니다.

SSH 명령 옵션

이제 ssh 명령의 가장 기본적인 옵션을 살펴보겠습니다.

  • 에프- SSH를 백그라운드 모드로 전환
  • g- 원격 컴퓨터가 로컬 포트에 액세스하도록 허용
  • - 시스템의 사용자 이름
  • N- 표준 출력을 /dev/null로 리디렉션
  • - 원격 시스템의 SSH 포트
  • - 오류 메시지를 표시하지 않습니다
  • V- 디버그 모드
  • 엑스- X11 리디렉션 비활성화
  • 엑스- X11 리디렉션 활성화
  • - 압축 활성화

이것이 유틸리티의 옵션 중 전부는 아닙니다. 나머지는 이 기사의 범위를 벗어납니다. SSH 작업에 대한 많은 설정은 ~/.ssh/config 구성 파일을 통해 변경할 수 있지만 여기서도 이에 대해 자세히 고려하지 않습니다.

SSH 서버 설정

SSH 서버 설정은 /etc/ssh/sshd_config에 있습니다. 우리도 그들 중 많은 부분을 건드리지 않을 것입니다. 가장 흥미로운 것만 고려해 봅시다. 먼저 /etc/ssh/sshd.conf 파일을 엽니다.

SSH 포트

기본적으로 ssh는 포트 22에서 실행됩니다. 그러나 공격자가 이 포트를 알고 암호를 무차별 공격하기 위해 Bruteforce 공격을 수행하려고 시도할 수 있으므로 이 동작은 안전하지 않습니다. 포트는 다음 줄로 지정됩니다.

포트 값을 원하는 값으로 변경하세요.

SSH 프로토콜

기본적으로 SSH 서버는 호환성을 위해 두 가지 프로토콜 버전에서 실행될 수 있습니다. 프로토콜 버전 2만 사용하려면 다음 줄의 주석을 해제하세요.

그리고 다음 형식으로 가져옵니다.

경로 접근

기본적으로 SSH를 통한 루트 액세스는 허용되지만 이 동작은 매우 안전하지 않으므로 다음 줄의 주석 처리를 제거하십시오.

PermitRoot로그인 없음

특정 사용자만 SSH에 액세스할 수 있습니다.

특정 사용자 또는 그룹에 대해서만 SSH 액세스를 허용할 수 있습니다. 이렇게 하려면 다음 줄을 추가하세요.

AllowUsers 사용자1, 사용자2, 사용자3
AllowGroups 그룹1, 그룹2, 그룹3

여기서 User1과 Group1은 액세스가 허용되어야 하는 사용자 및 그룹입니다.

X11 애플리케이션 실행

모든 사람이 아는 것은 아니지만 SSH를 사용하여 본격적인 X11 응용 프로그램을 시작할 수 있습니다. 이에 대해서는 아래에서 설명하겠지만 모든 기능이 작동하려면 서버 측에서 이 기능을 활성화해야 하며 다음 줄을 추가하세요.

X11전달 예

기본 옵션을 다루었습니다. 계속 진행하기 전에 SSH 서버를 재부팅하여 변경 사항을 저장하는 것을 잊지 마세요.

서비스 sshd 다시 시작

SSH 사용

이 기사의 주요 목적은 여러분이 알지 못했던 흥미롭고 유용한 SSH 사용 방법을 보여주는 것입니다. 가장 중요한 부분인 SSH 기능으로 넘어가겠습니다.

서버에 연결

SSH를 통해 서버에 간단히 연결하려면 다음 명령을 사용하십시오.

명령 실행

우리는 원격 서버에 연결한 다음 필요한 명령을 실행하는 데 익숙하지만 실제로 ssh 유틸리티를 사용하면 원격 시스템의 터미널을 열지 않고도 원하는 명령을 즉시 실행할 수 있습니다. 예를 들어:

SSH 사용자@호스트 ls

원격 서버에서 ls 명령을 실행하고 해당 출력을 현재 터미널로 반환합니다.

로컬 스크립트 실행

원격 서버에서 bash 인터프리터를 실행하고 Bash 입력 리디렉션을 사용하여 로컬 스크립트를 전달해 보겠습니다.

SSH 사용자@호스트 "bash -s"< script.sh

원격 서버에 백업 및 복구

SSH를 사용하여 원격 서버에 직접 디스크 백업을 저장할 수 있습니다. 리디렉션 연산자 |를 사용하여 dd의 출력을 리디렉션한 다음 해당 부분을 파일에 저장해 보겠습니다.

sudo dd if=/dev/sda | SSH 사용자@호스트 "dd of=sda.img"

이제 만든 복사본에서 디스크 상태를 복원하려면 다음을 실행하세요.

ssh user@host "dd if=sda.img" | dd =/dev/sda

여기서 /dev/sda 위는 하드 드라이브의 파일 이름입니다.

비밀번호 없이 인증

SSH 비밀번호를 사용하여 서버에 로그인하는 것은 불편할 뿐만 아니라 안전하지도 않습니다. 이 비밀번호는 언제든지 추측할 수 있기 때문입니다. 가장 안전하고 일반적으로 사용되는 인증 방법은 RSA 키 쌍을 사용하는 것입니다. 개인 키는 컴퓨터에 저장되고, 공개 키는 서버에서 사용자를 식별하는 데 사용됩니다.

이 동작을 구성하는 것은 매우 쉽습니다. 먼저 다음 명령을 사용하여 키를 만듭니다.

ssh-keygen -t rsa

키를 생성할 때 몇 가지 질문에 답해야 합니다. 비밀번호 없이 연결하려면 위치를 기본값으로 두십시오. Passphare 필드도 비워 두십시오.

그런 다음 키를 서버로 보냅니다.

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

로컬 파일에서 비밀번호 가져오기

일반 텍스트 파일에 비밀번호를 저장하는 것은 안전하지 않지만 원하신다면 가능합니다. 이렇게 하려면 Bash의 입력 리디렉션 연산자를 사용하세요.

SSH 사용자@호스트< local_file.txt

SSH 인사말 변경

SSH를 통해 로그인하면 인사말이 표시될 수 있으며 변경하는 것은 매우 쉽습니다. /etc/issue 파일이 이를 담당합니다. 이 파일을 열고 원하는 텍스트를 입력하세요.

실패한 SSH 로그인 시도 살펴보기

SSH를 통해 서버에 액세스하려는 시도가 실패했는지, 어떤 IP 주소에서 실패했는지 확인하시겠습니까? 간단히 말해서 모든 요청은 /var/log/secure 파일에 기록됩니다. 다음 명령을 사용하여 필요한 데이터만 필터링하겠습니다.

고양이 /var/log/보안 | grep "실패한 비밀번호"

SSH를 통해 파일 전송

명령 실행 외에도 SSH를 통해 파일을 복사할 수 있습니다. 이를 위해 scp 유틸리티가 사용됩니다. 전송하려는 파일, 원격 서버 및 서버의 폴더를 여기에서 지정하십시오.

$scp /주소/로컬/파일사용자@호스트:주소/폴더

예를 들어:

scp ~/test.txt user@host:documents

scp 유틸리티 외에도 ssh 파일 전송을 보다 영리하게 수행할 수 있습니다. 파일을 읽고 cat을 사용하여 전송한 다음 스트림을 파일에 저장해 보겠습니다.

고양이 로컬 파일 | ssh user@host "고양이 > 원격파일"

ssh user@host "고양이 > 원격파일"< localfile

tar czf - /home/user/file | SSH 사용자@호스트 tar -xvzf -C /home/remoteuser/

이 방법으로 SSH 파일을 복사하면 전체 폴더를 한 번에 보낼 수 있습니다.

SSH를 통해 그래픽 애플리케이션 실행

원격 시스템에서 이 그래픽 애플리케이션을 실행해야 하는 경우 이를 위해 VNC를 사용할 필요가 없으며 ssh 기능을 사용하면 됩니다. 프로그램은 서버 측에서 실행되며 필요한 모든 작업을 수행할 수 있는 창만 표시됩니다. 또한 모든 데이터는 암호화됩니다. 이 기능이 작동하려면 서버 측에서 활성화해야 합니다.

그런 다음 다음과 같이 원격 서버에서 그래픽 응용 프로그램을 시작하는 명령을 실행하기만 하면 됩니다.

ssh -XC user@remotehost "eclipse"

이미 본 것처럼 옵션 X는 클라이언트 측에서 X11 리디렉션을 허용하고 옵션 C는 데이터 압축을 허용합니다.

SSH 세션 종료

불안정한 인터넷에서 SSH를 사용한 경우 때때로 연결이 끊어지면 터미널을 닫는 데 지쳤을 것입니다. 그렇지 않으면 언뜻보기에 세션을 종료할 방법이 없기 때문입니다. 원격 서버와의 연결이 끊어지면 어떤 명령도 입력할 수 없으며 Ctrl+C, Ctrl+Z, Ctrl+D 키 조합이 작동하지 않습니다. 그리고 클라이언트가 이러한 명령을 서버에 보내려고 하기 때문에 작동하지 않습니다. 하지만 해결책이 있습니다. 바로 이스케이프 시퀀스입니다. 지원을 활성화하려면 다음 줄을 추가하세요.

/etc/ssh/ssh_config 파일로

" 당신은 초보 관리자이고 예를 들어 웹 서버를 설정하려고 합니다. 인터넷에 접속해서 자신에게 맞는 기사를 찾아보세요! 한 가지 중요한 점에 주목해 보겠습니다. 거의 모든 기사에는 필요한 서비스를 시작하기 위해 최소한의 명령이 제공됩니다. 알았어 - 효과가 있었어! 작동이 중단되지 않도록 모든 조치를 취했습니까? 인터넷을 통해 SSH를 사용하시나요? 기사는 초보자를 위해 특별히 작성되었기 때문에 서버 설정에 대한 이러한 접근 방식으로 인해 새로 작성된 관리자가 발생할 수 있는 문제를 기사에서 누구도 강조하지 않는 이유는 무엇입니까? 여러분이 적시에 안전 문제에 주의를 기울일 수 있도록 내 기사에 이 자료에 대한 메모와 링크를 반드시 기록하겠습니다. 미리 경고합니다-팔뚝!"

따라서 SSH(보안 셸)는 시스템에 대한 원격 액세스를 제공하는 보안 터미널 서버입니다. 안전하기 때문에 클라이언트와 서버 간의 모든 트래픽은 암호화됩니다. 기본 설정으로 안전한가요? 인터넷을 통해 SSH를 통해 연결할 수 있는 서버가 있다면 로그인할 때 비밀번호를 선택하려는 사람들이 분명히 있을 것입니다. 공격자가 시스템에 거의 무제한으로 액세스할 수 있다는 점은 설명할 필요가 없다고 생각합니다.

모든 최신 Ubuntu 배포판에서 개발자는 표준 매개변수를 사용하여 보안 수준을 높이려고 노력하지만 이것이 항상 충분하지는 않으며 때로는 잘못된 개념을 선택하여 실수를 저지르기도 합니다.

Ubuntu에 SSH 서버를 설치합니다.

Ubuntu에 SSH 서버 설치는 다음 명령으로 수행됩니다.

Sudo apt-get 설치 ssh openssh-server

설치 후 SSH 서버는 시작 시 자동으로 등록됩니다. 다음 명령을 사용하여 시작, 중지 또는 다시 시작을 제어할 수 있습니다.

Sudo 서비스 SSH 중지 | 시작 | 재시작

SSH의 기본 구성 파일 - 서버 - 파일 /etc/ssh/sshd_config, 슈퍼유저(루트)만 읽고 편집할 수 있습니다. 변경 사항을 적용하려면 SSH 서버를 다시 시작해야 합니다.

SSH 서버 보안 설정.

기본 프로토콜.

다시 말하지만, 최신 배포판은 기본적으로 SSH2 프로토콜을 구현합니다. 귀하의 경우 다음과 같은 경우 :

프로토콜 2.1

2개만 남겨두면 됩니다:

프로토콜 2

안전하지 않은 SSH1 프로토콜을 사용하는 것은 권장되지 않습니다.

기본적으로 최신 Ubuntu 릴리스에서는 SSH를 통한 루트 사용자 액세스가 제한됩니다.

비밀번호 없이 PermitRoot로그인

PermitRoot로그인 없음

이러한 설정을 사용하면 루트 사용자는 SSH를 통해 로그인할 수 없습니다.

이 옵션은 여러 관리자가 슈퍼 사용자 계정으로 서버를 작업하는 경우에도 편리합니다. 관리자는 자신의 계정으로 로그인한 후 루트 권한을 받게 됩니다. 이렇게 하면 서버와 관리자가 수행하는 작업을 감사하는 것이 훨씬 쉬워집니다.

Ubuntu의 루트에 대해 좀 더 자세히 설명하면, (시스템 설치 중에) 생성된 기본 사용자는 sudo를 통해 모든 관리 작업을 수행할 수 있습니다. 시스템에 액세스하기 위해 루트 사용자를 활성화하는 것은 불합리한 결정인 것 같습니다.

지정된 사용자 또는 그룹에게만 액세스 권한을 부여합니다.

서버에 특정 수의 사용자가 있지만 SSH를 통해 일부 사용자에게만 액세스를 제공하면 된다고 가정해 보겠습니다. 따라서 액세스 권한이 있는 사용자 범위를 제한해 보겠습니다.

AllowUsers user1 user2

관리자와 같은 필수 그룹을 지정할 수도 있습니다.

AllowGroups 관리자

"비어 있는" 비밀번호를 사용하여 액세스를 거부하세요.

빈 비밀번호를 사용한 원격 액세스를 명시적으로 허용하지 않아야 합니다.

빈 비밀번호 허용

기본 포트를 변경합니다.

SSH는 기본적으로 포트 22에서 실행됩니다. 따라서 대부분의 공격은 특별히 이 포트를 대상으로 하며, 선택한 사용자 이름과 비밀번호를 사용하여 서버에 대한 액세스 권한을 얻으려는 시도가 이루어집니다. 우리는 이미 가능한 공격자(루트) 기반에서 가장 유명한 사용자 이름을 제외하고 특정 사용자에게만 액세스를 허용했습니다. 이제 기본 포트(표준 포트에서 취약점을 찾는 봇)를 변경하여 가능한 공격 수를 줄입니다. 새 포트는 비어 있어야 합니다!) .

예를 들어 다음과 같이 변경해 보겠습니다.

포트 2220

포트를 변경해도 무차별 대입 공격(비밀번호 추측) 중에는 어떤 식으로든 도움이 되지 않는다는 점을 이해하는 것이 좋습니다. 예를 들어 공격자는 서버가 있는 IP 주소에서 포트 스캐너를 실행할 수 있으며 그 결과 열려 있는 모든 포트 목록을 받게 됩니다.

또한 이제 서버에 연결하려면 IP 주소 외에 포트 번호도 지정해야 한다는 점을 기억하세요.

무차별 대입 보호를 위해 실제로 작동하는 옵션은 SSH2 인증에 RSA 키를 사용하는 것입니다. 이 방법을 사용하면 사용자는 한 쌍의 키를 생성하는데, 그 중 하나는 비공개이고 다른 하나는 공개입니다. 공개 키는 서버에 있으며 사용자의 신원을 확인하는 데 사용됩니다. 또한 키-공개 키 조합을 암호로 보호하여 인증의 암호화 강도를 높일 수 있습니다. 논리는 간단합니다. 인증을 위해 비밀번호를 사용하지 않으면 추측할 것이 없습니다!

서버에 대한 SSH 액세스를 구성할 사용자로 시스템에 로그인합니다.

길이가 4096인 RSA 키를 생성해 보겠습니다. 저장 위치를 ​​지정하라는 메시지가 표시되고 이를 기본값(/home/UserName/.ssh/id_rsa)으로 두고 생성된 키에 대한 비밀번호를 설정하라는 메시지도 표시됩니다. . 비밀번호를 지정하지 않으면 인증서를 사용하여 서버에서 인증하는 동안 비밀번호를 입력할 필요가 없습니다. 비밀번호를 지정하는 것이 좋습니다.

SSH-keygen -t rsa -b 4096

지정된 디렉터리에 키 쌍이 생성됩니다.

id_rsa.pub- 공공의

id_rsa- 사적인

파일이 생성되었는지 확인해 보겠습니다.

CD ~/.ssh ls -al

폴더 및 파일에 대한 권한을 설정합니다.

Sudo chmod 0700 ~/.ssh/ sudo chmod 0600 ~/.ssh/id*

개인 키는 안전한 방식으로 클라이언트에 전송되어야 하며 키 손상을 방지하기 위해 서버에서 제거되어야 합니다.

id_rsa 키가 클라이언트에 전달됩니다.

/home/사용자 이름/.ssh/id_rsa

그 후에는 서버에서 삭제됩니다.

Sudo rm /home/UserName/.ssh/id_rsa

Authorized_keys 파일을 생성하고(인증서가 생성된 동일한 사용자 "UserName"으로 시스템에 있음) 파일 내용을 복사해 보겠습니다. id_rsa.pub, 소유자를 확인하고 디렉터리와 파일에 대한 권한을 설정해 보겠습니다.

Cd ~/.ssh sudo touchauthorized_keys sudo chown UserName:UserNameauthorized_keys sudo cat id_rsa.pub >>authorized_keys sudo chmod 0700 ~/.ssh/ sudo chmod 0600 ~/.ssh/authorized_keys

텍스트가 복사되었는지 확인해 보겠습니다.

Sudo 고양이 /home/UserName/.ssh/authorized_keys

텍스트가 성공적으로 복사되면 공개 키를 삭제할 수 있습니다.

Sudo rm /home/UserName/.ssh/id_rsa.pub

Sudo nano /etc/ssh/sshd_config

해당 행의 주석 처리를 제거하고 다음과 같이 매개변수를 설정해야 합니다.

# 키를 사용한 인증 허용 PubkeyAuthentication yes # 각 사용자의 디렉터리에 있는 자신의 파일을 연결할 수 있는 키가 있는 경로입니다. AuthorizedKeys파일 %h/.ssh/authorized_keys

SSH 서버를 다시 시작해 보겠습니다.

Sudo 서비스 SSH 다시 시작

SSH 액세스가 필요한 모든 사용자에 대해 인증서를 생성한 후 동일한 파일을 편집하여 비밀번호 인증을 비활성화하는 것이 좋습니다. /etc/ssh/sshd_config

주의, 비밀번호 인증을 비활성화하기 전에 키에 액세스할 수 있는지 확인하세요.

비밀번호인증번호 인증서를 사용하여 PuTTY를 통해 SSH 서버에 연결합니다.

먼저, 이전에 서버에서 가져온 개인 키(UserName 사용자 키)를 변환해야 합니다.

이를 위해서는 PuTTYgen 프로그램이 필요합니다.

개인 키 파일 업로드 " 전환 - 키 가져오기".

설정한 경우 비밀번호를 입력하세요.

선택하다 " 개인 키 저장"를 선택하고 결과 ppk 파일을 저장합니다. 손상될 수 없는 곳에 저장해야 합니다.

PuTTY 프로그램을 열고 연결을 구성합니다.

세션 - 호스트 이름(또는 IP 주소) SSH 서버가 구성된 호스트의 IP 주소입니다.

세션 - 포트 SSH 서버 설정에 지정된 포트.

세션 - 저장됨 세션세션(연결) 이름.

연결 - 데이터 - 자동 로그인 사용자 이름사용자 이름;

연결 - SSH - 인증 - 인증을 위한 개인 키 파일 ppk 파일 경로;

세션 - 저장세션을 저장하십시오.

세션 - 저장된 세션(세션 선택) - - 열려 있는- 세션이 시작되어야 합니다.

비밀번호를 입력하고 Enter를 누르면 시스템에 들어갑니다.

사용자의 인증서가 손상된 경우 인증서를 취소하고 사용자에 대한 액세스를 거부합니다.

인증서를 사용하여 UserName의 호스트 액세스를 차단하려면 해당 인증서가 저장된 폴더로 이동해 보겠습니다.

CD ~/.ssh

공개 인증서 파일 삭제 승인_키 OpenSSH 서버에서 부주의하게 파일을 삭제하지 않은 경우 id_rsa.pub그리고 id_rsa, 제거하세요. "ls" 명령을 사용하여 디렉토리의 내용을 봅니다.

필요한 파일을 삭제합니다.

Sudo rm Authorized_key id_rsa.pub id_rsa

승인을 위해 데이터를 입력하는 시간과 비활성 시 시간 초과를 제한하는 것도 좋은 방법입니다.

아래 예에서는 이 시간이 30초로 제한됩니다.

로그인GraceTime 30

연결 활동이 없을 때 시간 초과됩니다.

콘솔에 비활성이 기록되는 특정 시간이 지나면 자동으로 연결을 끊습니다.

클라이언트얼라이브카운트맥스 –매개변수는 SSH 클라이언트 활동을 감지하기 위해 SSH 서버에서 보낸 총 메시지 수를 나타냅니다. 기본값은 3입니다.

클라이언트살아있는간격– 매개변수는 대기 시간을 초 단위로 나타냅니다. 만료 후 SSH 서버는 클라이언트에 요청 메시지를 보냅니다. 이 매개변수의 기본값은 0입니다. 서버는 확인을 위해 메시지를 보내지 않습니다.

5분(300초) 후에 SSH 클라이언트를 자동으로 비활성화합니다.

ClientAliveInterval 300 ClientAliveCountMax 0

이 기사는 미완성으로 표시됩니다. 기사 마지막 부분의 참고 사항을 참조하세요.

이 문서는 Ubuntu의 보안 터미널(보안 셸) 클라이언트와 서버, 구성 및 사용에 대해 다룹니다. SSH는 높은 수준의 연결 보안을 통해 컴퓨터에 원격으로 액세스할 수 있는 특수 네트워크 프로토콜입니다. SSH 프로토콜에 대해 자세히 알아볼 수 있습니다.

사용된 작동 원리 및 응용 프로그램에 대한 설명

기본적으로 SSH는 SSH 서버와 SSH 클라이언트의 두 가지 응용 프로그램 형태로 구현됩니다. Ubuntu는 SSH 클라이언트와 서버의 무료 구현인 OpenSSH를 사용합니다. 연결 시 클라이언트는 서버와의 인증 절차를 거치며 서버 간에 암호화된 연결이 설정됩니다. OpenSSH 서버는 ssh1 및 ssh2 프로토콜 모두에서 작동할 수 있습니다. ssh1 프로토콜은 현재 안전하지 않은 것으로 간주되므로 사용을 권장하지 않습니다. 이 가이드의 주요 목적은 프로토콜의 구성과 사용을 설명하는 것이기 때문에 프로토콜의 다양한 기술적 세부 사항을 의도적으로 생략했습니다. 인터넷에는 프로토콜 자체, 작동 원리, 암호화 알고리즘 등에 관한 많은 기사가 있습니다. 예를 들어 이에 대해 자세히 읽을 수 있습니다.

설치

설치하다 오픈SSH터미널에서 다음 명령을 사용할 수 있습니다.

sudo apt-get 설치 SSH

ssh 메타패키지는 클라이언트와 서버를 모두 포함하지만 클라이언트는 기본적으로 Ubuntu에 이미 포함되어 있으므로 서버만 설치할 가능성이 높습니다.

서버 튜닝

설치 시 SSH 서버가 시작 시 자동으로 추가됩니다. 다음 명령을 사용하여 시작, 중지 또는 다시 시작을 제어할 수 있습니다.

sudo 서비스 ssh 중지| 시작| 재시작

SSH 서버의 기본 구성 파일은 /etc/ssh/sshd_config 파일로, 수퍼유저만 읽거나 편집할 수 있습니다. 이 파일을 변경할 때마다 해당 변경 사항을 적용하려면 SSH 서버를 다시 시작해야 합니다.

Ubuntu의 기본 SSH 서버 구성 예:

# 러시아어 # # 주석이 포함된 open-ssh 서버 구성의 예..2010. # # # # # # 규칙: # # "기본값"이란 지시어가 명시적으로 지정되지 않았을 때 # # sshd의 동작을 의미합니다. Ubuntu에서 # # sshd_config 파일에는 이미 Ubuntu의 기본 설정인 # # 여러 설정이 포함되어 있다는 점에 주목할 가치가 있습니다. # # 이러한 설정은 이 파일에 지정됩니다. # # # ########################################## ############# ################ 주소/포트 설정 등 ########### ################################### # ###################### # # ## 포트 ###################### ### ########################## # # 사용되는 포트입니다. 예를 들어 다음과 같이 여러 개를 지정할 수 있습니다. # # 포트 22 # # 포트 23 # # 포트 24 # # 비표준 포트를 사용하는 것이 좋습니다. # # 표준은 종종 잠재적인 구멍이 있는지 봇에 의해 스캔됩니다. ## 주소를 통해 지정하면 생략 가능합니다. ListenAddress 매개변수도 참조하세요. # # # 포트 22 # # ## ListenAddress ##################################### ### # # # 서버가 수신 대기 중인 네트워크 주소입니다. 주소는 # # 다음과 같이 쓸 수 있습니다: # # ListenAddress 호스트|IPv4_addr|IPv6_addr # # ListenAddress 호스트|IPv4_addr:port # # ListenAddress :port # # 포트가 지정되지 않으면 sshd는 이 주소를 # # 수신합니다. 포트 옵션에 지정된 포트입니다. # # 포트를 지정하지 않고 ListenAddress를 사용하려면 # # Port 옵션이 ListenAddress 옵션보다 앞에 있어야 합니다. # # 지정하지 않으면 기본적으로 모든 로컬 # # 주소를 수신합니다. 여러 주소를 지정할 수 있습니다. # # # ## 주소가족 ######################################## # # # sshd에서 사용해야 하는 IP 주소 계열을 # # 지정합니다. 가능한 옵션: # # "any" - 모두 # # "inet"(IPv4 전용) # # "inet6"(IPv6 전용) # # 기본값 - "any". # AddressFamily inet # # ## UseDNS ####################################### # ######## # # # sshd가 호스트 이름을 확인하고 # # 해당 호스트 이름을 사용하여 DNS에서 받은 IP 주소와 클라이언트가 보낸 IP 주소를 # # 확인해야 하는지 여부를 지정합니다. # # 기본값은 "예"입니다. # # # ########################################## ############# ############ 사용자 액세스 설정 ############## ####### ############################################# ### # # # 사용자 허용 여부는 # # DenyUsers, AllowUsers, DenyGroups 및 AllowGroups 지시어에 의해 결정됩니다. # # 이 경우 검사는 체인을 따라 위에서 아래로 진행됩니다. # # ## DenyUsers ## # # || # # ## AllowUsers ## # # || # # ## DenyGroups ## # # || # # ## AllowGroups ## # # 사용자 및 그룹 이름만 허용되며 숫자 식별자(UserID)는 # # 인식되지 않습니다. # # 공백으로 구분된 여러 사용자/그룹의 기록을 차례로 수정합니다. user@host 형식으로 작성하면 # # 사용자와 호스트가 별도로 확인되므로 # # 특정 호스트의 특정 사용자에 대한 액세스를 # # 제한할 수 있습니다. # # DenyUsers 및 AllowUsers 지시어는 사용자의 # # 이름을 매개 변수로 사용하고 DenyGroups 및 AllowGroups는 # # 그룹 이름을 사용한다는 점을 기억할 가치가 있습니다. 사용자 및 그룹 이름을 기록하는 양식에 대한 자세한 # # 정보는 man ssh_config의 패턴을 참조하세요. # # # ## 사용자 거부 ######################################## ### # # # SSHD를 사용할 수 없는 사용자 목록. # # 기본값 - 지정되지 않음 = 누구도 금지되지 않습니다. 저것들. # # 여기에 사용자가 지정되면 SSH 서버에 대한 액세스가 # # ​​거부됩니다. # # # ## 사용자 허용 ######################################## ## # # # sshd를 사용할 수 있는 사용자 목록, # # 기본적으로 지정되지 않음 = 모든 사람에게 허용됩니다. 저것들. # # 최소한 한 명의 사용자가 지정된 경우 해당 사용자만 서버에 대한 SSH 액세스를 # # 사용할 수 있습니다. # # # ## 그룹 거부 ######################################## ## # # # SSHD에서 사용하면 안 되는 그룹 목록입니다. # # 기본값 - 지정되지 않음 = 금지된 그룹이 없습니다. # # 그건 하나 이상의 그룹이 지정되면 이 그룹에 포함된 사용자는 # # SSH 서버에 대한 액세스가 거부됩니다. # # # ## AllowGroups ######################################## # # # # sshd가 사용할 수 있는 그룹 목록입니다. # # 기본값 - 지정되지 않음 = 모든 사람에게 허용됩니다. 저것들. # # 하나 이상의 그룹이 지정된 경우 해당 그룹에 포함된 사용자# #만 SSH 서버에 대한 액세스가 허용됩니다.# # # ################### # ############################################ ### 연결 상태를 결정하는 옵션 ############# ########################### ####### ####################### # # ## TCPKeepAlive ############# ######### ####################### # # # 시스템이 클라이언트에 TCP 메시지를 보내야 하는지 여부를 나타냅니다. # # 연결을 유지하기 위해. ## 이러한 패킷을 보내면 연결이 끊어졌는지 확인할 수 있습니다. 그러나 # # 이는 일시적인 라우팅 중단이 # # 발생하는 경우 연결이 끊어질 수 있음을 의미하며 # # 이는 일부 사람들에게 매우 짜증나는 일입니다. 반면 # # 이러한 메시지가 전송되지 않으면 서버의 세션이 # # 무기한 지속되어 # # "고스트" 사용자가 생성되고 서버 리소스가 소모될 수 있습니다. 기본값은 "예"입니다.# # 즉, 그런 메시지를 보내세요. # # 이러한 메시지 전송을 비활성화하려면 값을 "no"로 설정하십시오. 이전에는 이 # # 옵션을 KeepAlive라고 했습니다. # # 연결 상태를 확인하는 더 안전한 방법이 # # 있다는 점은 주목할 가치가 있습니다(아래 참조). # # # TCPKeepAlive 예 # # ## ClientAliveCountMax ################################### # # # sshd가 # # ​​클라이언트로부터 아무런 응답도 받지 않고 # # 연속으로 보내는 클라이언트에 보내는 메시지 수를 설정합니다. 임계값에 도달했는데 # # 클라이언트가 여전히 응답하지 않으면 sshd는 클라이언트 연결을 끊고 # # SSH 세션을 종료합니다. 이러한 # # 메시지의 사용은 TCPKeepAlive 지시어와 완전히 다르다는 점은 주목할 가치가 있습니다. # # 클라이언트와 주고받는 메시지는 암호화된 채널을 통해 # # 전송되므로 스푸핑에 취약하지 않습니다. 메시지 # # TCPKeepAlive는 스푸핑에 취약합니다. 클라이언트 살아 있는 # # 메커니즘은 서버와 클라이언트가 연결이 비활성화된 시기를 # # 알아야 하는 경우에 특히 유용합니다. 기본값 # # 값은 3입니다. ClientAliveInterval # #이 15로 설정되고 ClientAliveCountMax가 기본값으로 남아 있는 경우 # # 응답하지 않는 클라이언트는 약 # # 45초 후에 연결이 끊어집니다. 이 지시어는 ## ssh2 프로토콜에서만 작동합니다. # # # ## ClientAliveInterval #################################### # # # 세트 시간 간격(초)입니다. # # 이 간격 동안 클라이언트와 통신이 없으면 sshd # #는 암호화된 채널을 통해 클라이언트의 응답을 요청하는 메시지를 # # 보냅니다. 기본값은 0입니다. # # 그런 메시지를 보내지 마세요. 이 지시어는 ssh2 프로토콜에서만 작동합니다. # # # ########################################## ############# ############### 일반 인증 옵션 ############### ## ############################################# ######## # # ## AuthorizedKeysFile ################################# # # # # 사용자를 인증하는 데 사용되는 공개 키가 # # ​​포함된 파일을 지정합니다. # # 지시어에는 # # 연결 설정 프로세스 중에 삽입되는 %M 형식의 토큰이 포함될 수 있습니다. # # 다음 토큰이 정의됩니다: # # %% - 리터럴 "%"로 대체 # # %h - 인증된 사용자의 홈 디렉토리로 대체 # # # # %u - 인증된 사용자의 이름으로 대체 # # 따라서 키 파일은 # # 절대적인 방법(예: 키가 있는 하나의 공유 파일)으로 지정하거나 # # 사용자에 따라 동적으로(예: 각 사용자에 대해 하나의 # # 파일) 지정할 수 있습니다. # # 기본값은 “.ssh/authorized_keys”입니다. # # 사용자 홈 폴더에 있는 키 파일의 예: # # AuthorizedKeysFile %h/.ssh/authorized_key # # 공유 파일의 예: # # AuthorizedKeysFile /etc/ssh/authorized_keys # # 다음에 대한 Authorized_keys 파일 설명을 참조하세요. 추가 정보. # # # ## ChallengeResponseAuthentication ########################## # # # 시도-응답 인증을 허용할지 여부를 지정합니다 # # ). login.conf의 모든 # # 유형의 인증이 지원됩니다. 기본값은 "yes"입니다. 허용하다. # # Ubuntu에서는 보안상의 이유로 비활성화되었습니다. # # # ChallengeResponseAuthentication no # # ## HostbasedUsesNameFromPacketOnly ####################### # # # 서버가 클라이언트의 호스트 이름을 얻는 방법을 # # 지정합니다. 호스트 확인을 기반으로 한 인증 체계. # # "yes"로 설정하면 sshd는 # # 파일에서 일치 여부를 확인할 때 클라이언트가 제공한 호스트 이름을 사용합니다. # # ~/.shosts, ~/.rhosts 또는 /etc/hosts.equiv. # # (역방향 DNS 확인 수행) "no"로 설정하면 # # - sshd는 TCP 연결 자체에서 이름을 확인합니다. # # 기본값은 "아니요"입니다. # # # ## 호스트 무시 ######################################## # # # 호스트 기반 인증에서 .rhosts 및 .shosts 파일의 # # 사용을 방지합니다. # # (RhostsRSAAuthentication 또는 HostbasedAuthentication). # # /etc/hosts.equiv 및 /etc/ssh/shosts.equiv 파일은 # # 여전히 사용 중입니다. # # 기본값은 "예"입니다. # # # IgnoreRhosts 예 # # ## IgnoreUserKnownHosts ################################# # # # # # 호스트 기반 인증 프로세스(RhostsRSAAuthentication 또는 HostbasedAuthentication) 중에 sshd가 사용자 # # "알려진 호스트" 파일 ~/.ssh/known_hosts를 # # 무시해야 하는지 여부를 나타냅니다. # # 기본값은 "아니요"입니다. # # # ## PermitBlacklistedKeys ###################################### # # # sshd를 허용해야 하는지 여부를 나타냅니다. 키는 # # 손상된 것으로 블랙리스트에 올랐습니다(알려진 손상된 # # 키(ssh-vulnkey 참조)). "yes"로 설정하면 - # # 해당 키를 사용한 인증 시도가 기록되고 # # 승인되며, "no"로 설정하면 # # 인증 시도가 거부됩니다. # # 기본값은 "아니요"입니다. # # # ## 빈 비밀번호 허용 ################################### # # # 있음 비밀번호를 이용한 인증이 허용된 경우, ##은 빈 비밀번호로 로그인이 가능한지 여부를 나타냅니다. # # 기본값은 "아니요"입니다. # # # PermitEmptyPasswords no # # ## PermitRootLogin ##################################### # # # # 슈퍼유저(루트)로 SSH 로그인이 # # 가능한지 여부를 나타냅니다. 다음 값을 사용할 수 있습니다: # # "yes" - 수퍼유저가 로그인할 수 있습니다. # # 현재 글로벌 인증 체계가 적용됩니다. # # # # “비밀번호 없이” – 수퍼유저가 로그인할 수 있습니다. # # 비밀번호 인증이 비활성화됩니다. # # # # "forced-commands-only" - 슈퍼유저는 공개 키를 기반으로 한 # # 인증을 사용하고 # # 실행에 필요한 명령을 통과한 경우에만 # # 로그인할 수 있습니다. # # 이것은 백업을 할 때 유용합니다. # # 일반적인 경우에도(예: SSH를 통하지 않는 경우) # # 수퍼유저 로그인이 비활성화되어 있습니다. 슈퍼유저에 대한 다른 # # 인증 방법은 모두 차단됩니다.# # # # "아니요" - 슈퍼유저는 SSH를 사용하여 # # 로그인할 수 없습니다. # # # # 기본값은 "예"입니다. # # # PermitRootLogin 예 # # ## 프로토콜 ##################################### ######## # # # sshd가 사용해야 할 프로토콜을 지정합니다. # # '1'과 '2'의 가능한 값은 각각 ssh1과 ssh2입니다. 동시 작성이 가능하며, 이 경우 # # 값을 쉼표로 구분해야 합니다. # # 기본값은 "2.1"입니다. # # 항목의 프로토콜 순서가 우선순위를 결정하지 않는다는 점은 주목할 가치가 있습니다. 클라이언트는 서버가 사용하도록 # # 제안한 여러 프로토콜 중 # # 선택합니다. "2,1" 항목은 "1,2" 항목과 # # 완전히 동일합니다. # # # 프로토콜 2 # # ## UsePAM ##################################### ########## # # # PAM 인터페이스(플러그형 인증 모듈 # # 인터페이스)를 활성화합니다. "yes"로 설정하면 # # 세션 및 계정 모듈 처리 이외의 모든 인증 유형이 # # PAM 인증이 됩니다. # # 챌린지-응답(ChallengeResponseAuthentication 및 # # PasswordAuthentication)을 기반으로 사용됩니다. # # PAM의 시도-응답 인증은 일반적으로 비밀번호 인증과 # # 동일한 역할을 수행하므로 # # PasswordAuthentication 또는 # # ChallengeResponseAuthentication을 비활성화해야 합니다. # # UsePAM 지시문이 활성화되면 루트가 아닌 사용자로 # # sshd를 실행할 수 없다는 점에 유의할 가치가 있습니다. # # 기본값은 "아니요"입니다. # # # UsePAM 예 # # ## PasswordAuthentication ################################ # # # 여부를 나타냅니다. # # 비밀번호를 사용하여 인증 여부를 활성화합니다. # # 기본값은 "예"입니다. # # # ## 호스트 키 ######################################## ##### # # # SSH에서 사용하는 개인 호스트 키가 포함된 파일을 # # 지정합니다. 기본값은 ssh1 프로토콜의 경우 /etc/ssh/ssh_host_key # #이고, ssh2 프로토콜의 경우 /etc/ssh/ssh_host_rsa_key 및 # # /etc/ssh/ssh_host_dsa_key입니다. sshd는 사용자 이외의 다른 사람이 액세스할 수 있는 파일을 # # 사용하지 않는다는 점을 # # 주목할 가치가 있습니다. # # 여러 개의 키 파일을 사용할 수 있습니다. 키는 ssh1 프로토콜의 경우 # # "rsa1"이고 ssh2 프로토콜의 경우 "dsa"/"rsa"입니다. # # # 호스트 키 /etc/ssh/ssh_host_rsa_key 호스트 키 /etc/ssh/ssh_host_dsa_key # # ############################# ### ########################### ########## SSH 프로토콜 버전 1(ssh1) 옵션 ### ########## ################################# ### ################### # ssh1 프로토콜을 사용하는 것은 강력히 권장되지 않습니다.# # ssh2 프로토콜은 ssh1보다 훨씬 안전합니다 # ### ######## ###################################### ####### # # ## KeyRe GenerationInterval ############################## # # # ssh1 프로토콜 - 특정 시간에 한 번 # # 새 임시 서버 # # 키가 자동으로 생성됩니다(사용된 경우). 이는 # # 나중에 해당 세션의 매개변수를 사용하여 시스템에 로그인하고 # # 키를 훔치기 위해 가로채는 세션이 해독되는 것을 # # 방지하기 위해 수행됩니다. 이러한 키는 어디에도 저장되지 않습니다(## RAM에 저장됨). 이 지시문은 # # 키의 수명을 초 단위로 지정하며 그 이후에는 # # 다시 생성됩니다. 값이 0 - # #으로 설정되면 키가 다시 생성되지 않습니다. # # 기본값은 3600(초)입니다. # # # KeyRe GenerationInterval 3600 # # ## RhostsRSAAuthentication ############################## # # # 인증 기반 여부를 나타냅니다. # # RSA를 통한 성공적인 # # 호스트 인증과 함께 rhosts 또는 /etc/hosts.equiv 파일에. # # ssh1 프로토콜에만 해당됩니다. # # 기본값은 "아니요"입니다. # # # RhostsRSA인증 없음 # # ## RSA인증 #################################### ## # # # "순수한" RSA 인증이 허용되는지 여부를 나타냅니다. # # ssh1 프로토콜에만 해당됩니다. # # 기본값은 "예"입니다. # # # RSA인증 예 # # ## ServerKeyBits ##################################### ### ### # # # ssh1 프로토콜에 대한 서버 임시 키의 # # 비트 수를 정의합니다. 최소값은 512입니다. # # 기본값은 1024입니다. # ServerKeyBits 768 # # ############################## # ########################## ########### SSH 프로토콜 버전 2(ssh2) 옵션 ## ## ######## #################################### ### ################## # # ## 암호 ###################### ## ##################### # # # SSH2 프로토콜에 허용되는 암호화 알고리즘을 # # 나타냅니다. 여러 알고리즘은 # # 쉼표로 구분해야 합니다. 지원되는 알고리즘: # # “3des-cbc”, “aes128-cbc”, “aes192-cbc”, “aes256-cbc”, # # “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, “ arcfour128”, # # “arcfour256”, “arcfour”, “blowfish-cbc”, “cast128-cbc”. # # 기본적으로: # # aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128, # # arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr, # # aes192-ctr, aes256 -ctr # # # ## HostbasedAuthentication ############################### # # # 인증 여부를 나타냅니다. ## 호스트 확인을 기반으로 활성화되었습니다. rhosts 또는 /etc/hosts.equiv가 확인되고 # # 성공하면 공개 키 확인이 성공하고 # # 액세스가 허용됩니다. 이 지시문 # #은 RhostsRSAAuthentication 지시문과 동일하며 # #은 ssh2 프로토콜에만 적합합니다. # # 기본값은 "아니요"입니다. # # # 호스트 기반 인증 없음 # # ## MAC ##################################### ############ # # # 유효한 MAC 알고리즘(메시지 # # 인증 코드)을 나타냅니다. MAC 알고리즘은 데이터 무결성을 보호하기 위해 ssh2 프로토콜에서 # # 사용됩니다. 여러 # # 알고리즘은 쉼표로 구분해야 합니다. # # 기본값: # # hmac-md5,hmac-sha1, [이메일 보호됨] ,hmac-ripemd160, # # hmac-sha1-96,hmac-md5-96 # # # ## PubkeyAuthentication ######################## ########## # # # 공개 키 기반 인증이 # # 허용되는지 여부를 나타냅니다. ssh2 프로토콜에만 해당됩니다. # # 기본값은 "예"입니다. # # # Pubkey인증 예 ######################################### # ############### ################### GSSAPI 옵션 ########### ## ############ ################################ ## ####################### # # ############ SSH2 프로토콜에만 적용 가능 #### #### ### # # ## GSSAPI인증 ################################## ## # # # 사용자 인증이 GSSAPI 기반인지 # # 여부를 나타냅니다. 기본값은 "아니요"입니다. 금지. # # # ## GSSAPIKeyExchange #################################### # # # # # GSSAPI 기반의 키 교환이 허용되는지 여부를 나타냅니다. GSSAPI를 사용한 키 교환은 호스트 신원을 확인하기 위해 # # SSH 키에 의존하지 않습니다. # # 기본값은 "아니요"입니다. 즉, 교환이 금지되어 있습니다. # # # # GSSAPICleanupCredentials ############################## # # # 사용자 캐시를 자동으로 삭제할지 여부를 나타냅니다. # # 세션이 종료될 때 인증 자격 증명. # # 기본값은 "예"입니다. 즉, 파괴되어야 합니다. # # # # GSSAPIStrictAcceptorCheck ############################# # # 신원 확인이 얼마나 엄격해야 하는지 지정 # # GSSAPI를 통해 인증할 때 클라이언트입니다. # # "yes" 값은 클라이언트가 현재 호스트의 # # 수신 호스트 서비스에 대해 인증하도록 합니다. "no" 값은 # # 클라이언트가 임의의 서비스 키를 사용하여 # # 인증할 수 있도록 허용합니다. # # 기본값은 "예"입니다. # # 이것을 "no"로 설정하면 # # 드문 Kerberos GSSAPI 라이브러리에서만 작동할 수 있다는 점은 주목할 가치가 있습니다. # # # ########################################## ############# ################## Kerberos 옵션 ################ ########## #################################### ### ################## # # ## Kerberos 인증 ###################### ### ######## # # # 사용자가 인증을 위해 제공한 비밀번호 # #(PasswordAuthentication)에 Kerberos KDC에서 유효성 검사가 필요한지 여부를 나타냅니다. # # 이 옵션을 사용하려면 서버는 KDC가 true인지 # # 확인해야 합니다. (서버에는 # # KDC의 신원을 확인할 수 있는 Kerberos servtab이 # # 필요합니다.) # # 기본값은 “no”입니다. # # # ## KerberosGetAFSToken #################################### # # # AFS가 활성화되어 있고 사용자가 Kerberos 5 TGT를 받은 경우 # # 사용자가 홈 폴더에 액세스할 수 있기 전에 AFS 토큰을 얻으려고 # # 시도할지 여부입니다. # # 기본값은 "아니요"입니다. # # # ## KerberosOrLocalPasswd ############################### # # # 다음과 같은 경우에 수행할 작업을 나타냅니다. Kerberos를 통한 인증이 # # 실패하는 경우. # # value = "yes"이면 추가 로컬 인증 메커니즘(예: /etc/passwd)을 # # 사용하여 # # 비밀번호를 확인합니다. # # 기본값은 "예"입니다. # # # ## KerberosTicketCleanup ##################################### # # # 자동으로 파일을 종료할지 여부를 나타냅니다. 세션이 끝나면 # # 사용자 티켓 캐시가 있습니다. # # 기본값은 "예"입니다. # # # ########################################## ############# ################ 리디렉션 옵션 ################## # ## ########################################## ## ############ # # #AllowAgentForwarding ############################ #### ### # # # 리디렉션을 허용할지 여부를 나타냅니다. # # ssh-agent. 기본값은 "예"입니다. 즉, 허용합니다. # # 리디렉션을 비활성화해도 사용자가 # # ​​보안을 강화할 수는 없습니다. 또한 # # 자체 에이전트 아날로그를 # # 설치할 수 있기 때문에 쉘 액세스가 거부됩니다. ############### # # TCP 활성화 또는 비활성화 여부를 나타냅니다. 리디렉션 # # 기본값은 "예"입니다. 즉, AllowAgentForwarding의 경우 # # 리디렉션을 비활성화해도 # # 사용자에게 콘솔 액세스 권한이 있는 한 보안이 향상되지 않습니다. # 자체 대응 항목 설치 # # # # ## GatewayPorts ######### ########################. ####### # # # 원격 호스트가 전달된 포트에 # # 액세스하도록 허용할지 여부를 지정합니다. 기본적으로 sshd는 로컬 루프백 인터페이스에서만 # # 전달된 포트에 대한 연결을 수신합니다. 이는 다른 원격 # # 호스트가 전달된 포트에 연결하는 것을 방지합니다. # # GatewayPort를 사용하여 sshd가 이 작업을 # # 할 수 있도록 허용할 수 있습니다. 지시어는 3가지 값을 가질 수 있습니다: # # "no" - 루프백만. # # "예" - 모든 주소. # # "clientspecified" - 클라이언트가 지정한 주소입니다. # # # ## 허가오픈 ######################################## ## # # # TCP 포트 전달이 허용되는 위치를 나타냅니다. # # 리디렉션을 지정하려면 # # 다음 형식 중 하나를 사용해야 합니다. # # PermitOpen 호스트:port # # PermitOpen IPv4_addr:port # # PermitOpen :port # # 여러 항목을 공백으로 구분하여 지정할 수 있습니다. # # "any" 인수를 사용하면 포트 전달에 대한 모든 제한을 # # 제거할 수 있습니다. 기본적으로 모든 # # 리디렉션이 허용됩니다. # # # ## 허가 터널 ######################################## # # # tun 장치의 리디렉션이 허용되는지 여부를 나타냅니다. # # 값을 취할 수 있습니다: # # "yes" # # "point-to-point"(세 번째 네트워크 계층) # # "ethernet"(두 번째 네트워크 계층) # # "no" # # 값 "yes"는 "point-to-point"(세 번째 네트워크 계층)를 모두 허용합니다. -to-point” # # 및 “ethernet”을 동시에 사용합니다. 기본값은 "아니요"입니다. # # # ########################################## ############# ################# 로깅 옵션 ################# ### ########################################## ## ############ # # ## SyslogFacility ############################ ## ########## # # # sshd에서 syslog에 메시지를 쓰기 위한 로그 개체 코드를 # # 설정합니다. 가능한 값: # # DAEMON # # USER # # AUTH # # LOCAL0 # # LOCAL1 # # LOCAL2 # # LOCAL3 # # LOCAL4 # # LOCAL5 # # LOCAL6 # # LOCAL7 # # 기본값은 AUTH입니다. # # # SyslogFacility AUTH # # ## 로그 수준 #################################### ######## # # # SSHD 로그의 상세 수준을 설정합니다. # # 가능한 옵션: # # SILENT # # QUIET # # FATAL # # ERROR # # INFO # # VERBOSE # # DEBUG # # DEBUG1 # # DEBUG2 # # DEBUG3 # # 기본값은 INFO입니다. # # DEBUG와 DEBUG1은 서로 동일합니다. # # DEBUG2 및 DEBUG3은 최고 수준의 디버그 출력을 # # 설정합니다. DEBUG 수준의 로깅은 # # 사용자 개인 정보를 위협하므로 권장되지 않습니다. # # # 로그 수준 정보 # # ####################################### ################ ################## X11 리디렉션 ############ ######## ###################################### # ################## # # # X11전달 ######################## ### ############### # # # X11 그래픽 하위 시스템 리디렉션이 # # 활성화되어 있는지 여부를 나타냅니다. "예" 또는 "아니요" 값을 취할 수 있습니다. # # 기본값은 "아니요"입니다. # # 주의 - 간단한 X11 리디렉션을 활성화하는 것은 # # 서버와 클라이언트 모두에게 큰 위험입니다. # # 이러한 리디렉션에서 sshd 프록시 디스플레이는 # # 모든 주소의 연결을 허용합니다. # # X11UseLocalhost 지시문을 사용하여 # # X의 리디렉션 서버에 대한 액세스를 제한합니다. # # 리디렉션을 비활성화한다고 해서 # # 사용자가 X11을 리디렉션할 수 없다는 보장은 없다는 점은 주목할 가치가 있습니다. # # 콘솔 액세스 권한이 있으면 항상 자체 # # 리디렉터를 설치합니다. UseLogin # # 지시어가 활성화되면 X11 리디렉션은 # # 자동으로 비활성화됩니다. # # # X11전달 예 # # ## X11UseLocalhost ##################################### ### # # # # sshd가 # # ​​X11 전달의 범위를 로컬 루프백 주소로 제한해야 하는지 # # 모든 주소를 허용해야 하는지를 나타냅니다. 기본적으로 sshd # #은 X11 리디렉션 서버를 로컬 주소 # #으로 설정하고 DISPLAY 환경 변수 # #의 호스트 이름 부분을 "localhost"로 설정합니다. # # 일부 오래된 X11 클라이언트는 이러한 설정에서 # # 작동하지 않을 수 있다는 점은 주목할 가치가 있습니다. 기본값은 "예"입니다. 리디렉션 # #은 localhost에 의해 제한되며 값 - "no"는 제한 사항을 # # 비활성화합니다. # # # ## XAuthLocation ######################################## # # # xauth 프로그램의 전체 경로를 지정합니다. # # 기본값은 /usr/bin/X11/xauth입니다. # # # ## X11DisplayOffset #################################### # # # # # X11 리디렉션으로 sshd에 사용할 수 있는 첫 번째 디스플레이 번호를 나타냅니다. 이는 리디렉션된 X가 실제 X와 # # 겹치지 않도록 # # 수행됩니다. 기본값은 10입니다. # # # X11DisplayOffset 10 # # # ################################### ## ##################### ################## 다양한 옵션 ##### ## ################## ########################### ##### ########################## # ## LoginGraceTime ############ ####### ######################## # # # 서버 연결이 끊어진 후 # # 사용자가 연결을 끊을 수 없는 경우 # # 만족스럽게 로그인하세요. 값 0 - 사용자가 # # ​​무기한으로 로그인할 수 있도록 허용합니다. 기본값은 120(초)입니다. # # # LoginGraceTime 120 # # ## MaxAuthTries #################################### ### #### # # # 연결당 허용되는 최대 인증 시도 횟수를 나타냅니다. # # 실패한 시도 횟수가 지정된 값의 절반을 # # 초과하면 모든 후속 시도가 # # ​​기록됩니다. 기본값은 6입니다. # # # ## MaxSessions ################################### ####### # # # 각 네트워크 연결에 대한 최대 동시 연결 수를 # # 지정합니다. 기본값은 10입니다. # # # ## MaxStartups ################################### ###### # # # sshd에 대한 무단 동시 연결의 최대 개수를 # # 지정합니다. # # 연결 수가 제한을 초과하면 현재 # # 연결이 성공적인 인증으로 완료되거나 # # LoginGraceTime 지시문에 지정된 기간이 만료될 때까지 모든 추가 # # ​​연결이 삭제됩니다. 기본값은 10입니다. # # 선택적으로 # # 세 개의 값을 매개변수로 지정하고 # # 콜론 “start:rate:full”로 구분하여 연결을 조기에 재설정하도록 설정할 수 있습니다(예: "10:30). :60"). # # sshd는 # # "rate/100"과 동일한 확률로 연결 시도를 거부합니다(예: 이 예에서는 - 30%) 이미 # # "start"(10) 무단 연결이 있는 경우입니다. # # 확률은 선형적으로 증가하며 승인되지 않은 연결 수가 "전체"(60)에 도달하면 # # 연결 시도가 거부됩니다. # # # ## 압축 ######################################## # # # # 데이터 압축이 활성화되어 있는지 여부를 나타냅니다. # # "예"일 수 있습니다 - 압축이 활성화됩니다. # # "delayed" - 사용자가 성공적으로 인증될 때까지 # # 압축이 지연됩니다. # # "아니요" - 압축이 비활성화됩니다. # # 기본값은 "지연"입니다. # # # ## 로그인 사용 ######################################## #### # # # 대화형 세션에 로그인을 사용해야 하는지 여부를 # # 나타냅니다. 기본값은 "아니요"입니다. # # 원격 명령을 실행하는 데 로그인이 # # 사용된 적이 없다는 점은 주목할 가치가 있습니다. 또한 # # 로그인을 사용하면 X11Forwarding 지시문을 # # 사용할 수 없게 됩니다. 로그인은 xauth로 무엇을 # # 해야 할지 모르기 때문입니다. # # UsePrivilegeSeparation 지시문이 활성화되면 # # 인증 후에 비활성화됩니다. # # # ## UsePrivilegeSeparation ################################## # # # sshd 여부를 지정합니다. 권한을 분리해야 합니다. 그렇다면 # # 들어오는 네트워크 트래픽에 대해 권한이 없는 하위 # # 프로세스가 먼저 생성됩니다. # # 인증이 성공하면 로그인한 사용자의 권한을 사용하여 # # 다른 프로세스가 생성됩니다. ##권한분리의 주요 목적은 접근권한의 남용을 방지하는 것입니다. # # 기본값은 "예"입니다. # # # UsePrivilegeSeparation 예 # # ## StrictModes ##################################### ##### # # # sshd가 사용자 로그인을 허용하기 전에 # # 사용자 폴더와 파일의 액세스 및 # # 소유권 모드를 확인해야 하는지 여부를 지정합니다. 이는 일반적으로 초보자가 자신의 파일을 모든 사람이 쓸 수 있도록 # # 만드는 경우가 많기 때문입니다. 기본값은 "예"입니다. # # # StrictModes 예 # # ## AcceptEnv ##################################### ####### # # # 클라이언트가 전달한 환경 변수가 # # ​​허용되도록 지정합니다. 클라이언트에서 SendEnv 옵션을 참조하세요. # # 변수 전달은 ssh2 프로토콜에서만 # # 가능하다는 점에 주목할 가치가 있습니다. 변수는 이름으로 지정되며 # # 마스크를 사용할 수 있습니다('*' 및 '?'). # # 여러 변수를 공백으로 구분하여 지정하거나 AcceptEnv를 # # 여러 줄로 나눌 수 있습니다. 주의하세요 - 일부 # # 환경 변수는 금지된 사용자 환경을 우회하는 데 # # 사용될 수 있습니다. 이 # # 지시문을 주의해서 사용하세요. 기본적으로 # # 사용자 환경 변수는 허용되지 않습니다. # # # AcceptEnv LANG LC_* # # ## PermitUserEnvironment ############################### # # # sshd가 # # ​​~/.ssh/environment 및 ~/.ssh/authorized_keys의 # # 환경= 옵션을 허용해야 하는지 여부를 지정합니다. 기본값은 "아니요"입니다. 환경 처리를 활성화하면 # # LD_PRELOAD와 같은 메커니즘을 사용하는 일부 구성에서 # # 제한을 우회할 수 있는 능력이 # # 사용자에게 제공될 수 있다는 점은 # # 주목할 가치가 있습니다. # # # # # ## PidFile ###################################### # ####### # # # SSH 데몬의 프로세스 ID(프로세스 ID, PID)가 # # ​​포함된 파일을 지정합니다. # # 기본값 - /var/run/sshd.pid # # # # # ## PrintLastLog ########################### # ############## # # # 사용자가 대화형으로 로그인할 때 sshd가 마지막 세션의 # # 날짜와 시간을 표시해야 하는지 여부를 지정합니다. # # 기본값은 "예"입니다. # # # PrintLastLog 예 # # ## PrintMotd ##################################### ####### # # # 사용자가 대화형으로 로그인할 때 sshd가 /etc/motd를 # # 표시해야 하는지 여부를 지정합니다. 일부 # # 시스템(예: Ubuntu)에서는 이 정보가 쉘에도 # # 표시됩니다. # # 기본값은 "예"입니다. # # # PrintMotd no # # ## 배너 ##################################### ########## # # # 인증 절차 전에 # # 사용자에게 표시될 텍스트 배너가 포함된 파일을 # # 나타냅니다. 이 옵션은 ssh2 프로토콜에만 사용할 수 있습니다.# # 기본적으로 - 아무것도 표시하지 않습니다. # # Ubuntu의 경우 issue.net 파일에 Ubuntu(버전)라는 문구가 포함되어 있습니다. # # 예를 들어 karmic의 경우 "Ubuntu 9.10"입니다. # # 가능한 공격자를 혼란스럽게 하는 데 사용할 수 있습니다. # # 거기에 "My D-Link Interet Router"와 같이 작성하여 # # 사용할 수 있습니다. =) # # # 배너 /etc/issue.net # # ## ChrootDirectory ###### ##### ############################ # # 지정된 경우 경로를 루트로 # # 제공합니다. 인증 후. 경로와 # # 모든 내용은 슈퍼유저가 소유한 폴더와 # # 일치해야 하며 다른 사용자가 # # ​​쓸 수 없어야 합니다. # # 경로에는 # # 인증 프로세스 중에 대체되는 레이블이 포함될 수 있습니다. # # %% - 리터럴 "%"로 대체됨 # # %h - 인증된 사용자의 # # 홈 디렉토리로 대체됨 # # %u - 인증된 사용자의 이름으로 대체됨 # # chroot -폴더에는 사용자 세션에 필요한 모든 파일과 # # 폴더가 포함되어야 합니다. 대화형 # # 세션에는 최소한 다음이 필요합니다. # # 쉘, 일반적으로 sh # # /dev의 기본 장치: # # null, zero, stdin, stdout, stderr, arandom 및 tty # # 다음을 사용하는 데이터 전송 세션용 sftp no # # 내부 SFTP 서버 프로세스를 사용하는 경우 # # 추가 설정이 필요합니다. ## 자세한 내용은 하위 시스템을 참조하세요. 기본적으로 chroot는 수행되지 않습니다. # # # ## 강제명령 ######################################## # # # 지정된 명령이 실행되도록 합니다. # # 클라이언트가 보내거나 ~/.ssh/rc에 작성된 모든 명령을 # # 무시합니다. 명령은 -c 옵션을 사용하여 사용자의 # # 쉘에서 호출됩니다. 쉘, # # 명령 또는 하위 시스템을 시작하는 데 적합합니다. # # Match 블록 내에서 가장 유용합니다. 클라이언트가 원래 실행한 명령은 # # SSH_ORIGINAL_COMMAND 환경 변수에 저장됩니다. # # "internal-sftp" 명령을 지정하면 # # 내부 SFTP 서버가 시작되며 ChrootDirectory 지시문에 설명된 추가 # # ​​파일 및 폴더가 필요하지 않습니다. # # # ## 하위 시스템 ######################################## ### # # # 외부 하위 시스템(예: # # 파일 전송 데몬)을 정의하고 구성합니다. # # 인수는 하위 시스템을 요청할 때 # # 실행될 이름과 명령(가능한 # # 인수 포함)입니다. sftp-server 명령은 "sftp" - # # 파일 전송 하위 시스템을 시작합니다. 또한 # # "internal-sftp"를 하위 시스템으로 지정할 수 있습니다. 그러면 # # 내부 SFTP 서버가 시작됩니다. 이는 # # ChrootDirectory 지시문을 사용할 때 # # 구성을 크게 단순화할 수 있습니다. 기본적으로 하위 시스템은 # # 호출되지 않습니다. ssh2 프로토콜에만 해당됩니다. # # # 하위 시스템 sftp /usr/lib/openssh/sftp-server # # ############################### # ########################## #################### 일치 블록 ########################## ################### ### ################################# # # 특별히 마지막으로 옮겼습니다 보다 편리하게 파일을 # # 일치 규칙을 작성합니다. # # 매드콕스. # # # # Match 지시문은 조건부 블록의 시작을 # # 나타냅니다. # # 일치 라인에 지정된 모든 기준이 충족되면 블록의 후속 라인에 있는 지시어가 # # ​​실행되어 # # sshd_config 파일의 전역 지시어 값이 다음과 같은 경우에 우회될 수 있습니다. # # 지시문의 기준을 일치시킵니다. 블록은 기준(일치 - 줄)을 사용하여 # # 줄 다음에 다음 일치 줄 # # 또는 파일 끝까지 오는 모든 줄로 간주됩니다. Match 지시문의 인수는 하나 또는 # # 여러 쌍의 기준 항목입니다. 가능한 항목 유형: # # 사용자 # # 그룹 # # 호스트 # # 주소 # # 항목에는 단일 값 ​​# #(예: User=user) 또는 여러 값 ​​# # 쉼표로 구분된 값(User=user1)이 포함될 수 있습니다. ,사용자2). ssh_config 파일의 # # PATTERNS 섹션에 설명된 정규식도 # # 사용할 수 있습니다. # # 주소 기준의 항목에는 CIDR # #(주소/마스크 길이, 예: “192.0.2.0/24” 또는 # # “3ffe:ffff::/32”) 표기법의 주소가 포함될 수 있습니다. 제공된 # # 마스크 길이는 주소와 일치해야 하며 주소에 너무 # # 길거나 짧으면 작동하지 않는다는 점에 유의할 가치가 있습니다. # # 일치는 # # 특정 지시문 세트만 지시문으로 사용할 수 있습니다. # # AllowTcpForwarding # # Banner # # ChrootDirectory # # ForceCommand # # GatewayPorts # # GSSAPIAuthentication # # HostbasedAuthentication # # KbdInteractiveAuthentication # # KerberosAuthentication # # MaxAuthTries # # MaxSessions # # PasswordAuthentication # # PermitOpen # # PermitRootLogin # # RhostsRSAAuthentication # # RSAAuthentication # # X11DisplayOffset # # X11Forwarding # # X11UseLocalHost #

위의 텍스트를 자신의 sshd_config에 복사하고 나중에 구성에 사용할 수 있습니다.

잘못 구성된 SSH 서버 자체는 시스템 보안에 큰 취약점이 됩니다. 공격자가 시스템에 거의 무제한으로 액세스할 수 있는 기회가 있기 때문입니다. 또한 sshd에는 유용성과 보안을 향상시키기 위해 활성화하는 것이 권장되는 유용한 추가 옵션이 많이 있습니다.

포트, ListenAddress 및 AddressFamily

이 세 가지 매개변수는 서버가 들어오는 연결을 수신할 포트와 주소를 결정합니다. 첫째, 가능하다면 처리되는 주소 계열을 실제로 사용되는 주소로 제한하는 것이 합리적입니다. 즉, IPv4만 사용하는 경우 IPv6을 비활성화하고 그 반대의 경우도 마찬가지입니다. 이는 예를 들어 AddressFamily 매개변수를 사용하여 수행할 수 있습니다(IPv4를 허용하고 IPv6를 거부하기 위해).

AddressFamily inet

둘째, sshd가 수신 대기하는 표준 포트(22)를 변경하는 것이 좋습니다. 이는 수많은 네트워크 스캐너가 지속적으로 포트 22에 연결을 시도하고 최소한 데이터베이스에서 로그인/비밀번호를 무차별 대입하여 액세스하려고 하기 때문입니다. 비밀번호 인증을 비활성화한 경우에도 이러한 시도로 인해 로그가 크게 막히고 (대량으로) SSH 서버 속도에 부정적인 영향을 미칠 수 있습니다. 어떤 이유로 표준 포트를 변경하고 싶지 않은 경우 다양한 외부 유틸리티를 사용하여 무차별 대입 공격자(예: failure2ban) 및 MaxStartups와 같은 내장 유틸리티를 사용할 수 있습니다.
Port 지시문을 사용하여 모든 인터페이스에 대한 절대 값으로 포트를 설정하거나 ListenAddress 지시문을 사용하여 각 인터페이스에 대한 특정 값으로 포트를 설정할 수 있습니다. 예를 들어:

포트 2002

ListenAddress 192.168.0.1:2003 ListenAddress 192.168.1.1:2004

슈퍼유저의 원격 액세스 거부

기본적으로 루트 액세스는 비밀번호로 금지됩니다(키로 가능함). PermitRootLogin 옵션은 with-password 로 설정됩니다. 그러나 기본적으로 Ubuntu에서 시스템 설치 중에 추가된 사용자는 sudo를 통해 모든 관리 작업을 해결할 수 있으므로 ssh를 통해 시스템에 대한 루트 액세스 기능을 생성하는 것은 비합리적인 것 같습니다(키 인증을 사용하더라도). 완전히 끄는 것이 좋습니다. 이 옵션을 사용하거나 강제 명령 전용 모드에서만 사용하세요. 다음과 같이 루트 액세스를 비활성화할 수 있습니다.

PermitRoot로그인 없음

비밀번호 인증

기본적으로 허용되는 비밀번호 인증은 실제로 sshd에서 가장 원시적인 인증 방법입니다. 이는 새로운 사용자의 구성 및 연결을 단순화하는 한편(사용자는 자신의 시스템 로그인/비밀번호만 알면 됨), 비밀번호는 항상 추측할 수 있으며 사용자는 종종 복잡하고 긴 비밀번호 생성을 무시합니다. . 특수 봇은 인터넷에서 액세스할 수 있는 SSH 서버를 지속적으로 검사하고 데이터베이스에서 로그인/비밀번호를 무차별 대입하여 로그인을 시도합니다. 비밀번호 인증을 사용하지 않는 것이 좋습니다. 다음과 같이 비활성화할 수 있습니다.

비밀번호인증번호

어떤 이유로든 여전히 비밀번호 인증을 사용하려는 경우 빈 비밀번호로 아무도 로그인할 수 없는지 확인하십시오. 이렇게 하려면 PermitEmptyPasswords 지시어를 설정하세요.

빈 비밀번호 허용

프로토콜 SSH1 및 SSH2

이미 언급했듯이 sshd는 SSH1 및 SSH2 프로토콜과 함께 작동할 수 있습니다. 그러나 안전하지 않은 SSH1을 사용하는 것은 권장되지 않습니다. 다음과 같이 sshd가 SSH2 프로토콜에서만 작동하도록 강제할 수 있습니다.

SSH2 RSA 키 기반 인증

가장 선호되는 인증 방법은 SSH2 RSA 키를 기반으로 하는 인증입니다. 이 방법을 사용하면 사용자는 자신의 측에서 한 쌍의 키를 생성하는데, 그 중 하나는 비밀이고 다른 하나는 공개입니다. 공개 키는 서버에 복사되어 사용자의 신원을 확인하는 데 사용됩니다. 키 쌍 생성 및 이를 서버에 배치하는 방법에 대한 자세한 내용은 SSH 클라이언트 설명을 참조하세요. 다음과 같이 공개 키 인증을 활성화할 수 있습니다.

Pubkey인증 예

서버는 사용자의 공개 키를 찾을 위치를 알아야 합니다. 이를 위해 특수 파일authorized_keys가 사용됩니다. 구문은 다음과 같습니다.

# 주석은 새 줄에만 작성됩니다. # Authorized_keys 파일에 있는 항목의 일반적인 모양 # [options] key_type (ssh-rsa 또는 ssh-dss) Very_long_string_incomprehensible to the common man [login@host] ssh-rsa AAAAB3Nza...LiPk == [이메일 보호됨] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [이메일 보호됨] command="dump /home",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net allowedopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh -dss AAAAB5...21S== 터널="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== [이메일 보호됨]

키가 포함된 하나의 공유 파일을 지정하거나 각 사용자당 하나의 파일을 지정할 수 있습니다. 후자의 방법은 먼저 각 사용자에 대해 서로 다른 키 조합을 지정할 수 있고 두 번째로 사용자의 공개 키에 대한 액세스를 제한할 수 있기 때문에 더 편리하고 안전합니다. AuthorizedKeysFile 지시문을 사용하여 키가 있는 파일을 지정할 수 있습니다.

승인된 키 파일 %h/.ssh/my_keys

스키마 사용자의 경우 - 파일
또는

AuthorizedKeys파일 /etc/ssh/authorized_keys

공유 파일이 있는 구성표의 경우. 기본적으로 SSH 클라이언트는 ~/.ssh/authorized_keys 파일에서 키를 찾습니다.

안전에 대해 자세히 알아보기

추가 세팅

사용자 및 그룹.

서버에 "살아있는" 사용자가 많고 그 중 소수에게만 SSH를 통한 액세스를 허용하려는 경우 DenyUsers, AllowUsers, DenyGroups 및 AllowGroups 지시문을 사용할 수 있습니다. 이러한 지시문에 대한 자세한 내용은 sshd_config 예제의 설명을 참조하세요.

연결 상태 옵션

기본적으로 연결 상태를 확인하는 방법 중 TCP 연결 확인 방법인 TCPKeepAlive만 활성화되어 있지만 sshd에서는 보다 편리하고 안전한 방법으로 연결 상태를 확인할 수 있습니다. 자세한 내용은 sshd_config 예시의 해당 섹션을 참조하세요.

성능. 최대스타트업

포트 포워딩

X11 리디렉션

서버의 /etc/ssh/sshd_config 파일에서 매개변수를 설정합니다(기본적으로 활성화됨).

ForwardX11 예

클라이언트에서 /etc/ssh/ssh_config 파일에 매개변수를 설정합니다(기본적으로 비활성화되어 있음).

ForwardAgent 예 ForwardX11 예

ssh yurauname@serverip firefox 와 같이 클라이언트에서 실행할 수 있습니다. 또는 먼저 ssh yurauname@serverip로 이동한 후 예를 들어 sudo synaptic 을 실행하세요.

SFTP

sshd에는 기본적으로 SFTP 서버가 내장되어 있습니다. SFTP(SSH 파일 전송 프로토콜) - 파일 전송을 위한 SSH 프로토콜입니다. 안정적이고 안전한 연결을 통해 다른 파일 작업을 복사하고 수행하도록 설계되었습니다. 일반적으로 SSH2 프로토콜은 연결을 제공하는 기본 프로토콜로 사용됩니다. SFTP 지원을 활성화하려면 sshd_config에 해당 행을 추가하십시오.

하위 시스템 sftp /usr/lib/openssh/sftp-server

기본적으로 SFTP 지원은 활성화되어 있습니다.

기준을 사용합니다. 일치 지시어

SSH 클라이언트 설정

키를 사용한 로그인은 가장 안전한 것으로 간주되며 대부분의 경우 이 기능은 서버 측에서 활성화되므로 사용하는 데 수퍼유저 권한이 필요하지 않습니다. 클라이언트 컴퓨터에서 키를 생성합니다.

ssh-keygen -t rsa

키 파일을 보호하기 위해 비밀번호를 입력하라는 메시지가 표시됩니다(파일이 잘못된 사람의 손에 들어간 경우 유용합니다). SSH를 통해 스크립트를 실행하려는 경우에는 비워 둡니다. 다음 명령을 사용하여 공개 키를 서버로 전송합니다.

Ssh-copy-id -i ~/ .ssh/ id_rsa.pub user@ 서버

그게 다야, 들어오시면 됩니다.

SSH가 비표준 포트에서 실행 중인 경우:

Ssh-copy-id -i ~/ .ssh/ id_rsa.pub "-p 포트 user@server"

오류가 발생하는 경우: 잘못된 포트 "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

매개변수를 따옴표로 묶어보세요.

SSH-복사-ID "-i /home/user/.ssh/id_rsa.pub "-p 포트 user@server""

원격 시스템 접속 시 스크린 유틸리티를 이용하면 편리합니다.

노틸러스에서 원격 SSH 디렉토리 설정

sshfs를 사용하여 원격 디렉터리 마운트

원격 디렉터리를 로컬 디렉터리에 마운트

sshfs [email protected]:/ home/ userdir ~/ sshfsdir

마운트 해제

퓨저마운트 -u ~/ sshsfdir

SSH 별칭

서로 다른 액세스 매개변수(비표준 포트, 긴 호스트 이름, 로컬 로그인 이외의 로그인 등)를 가진 여러 서버를 사용하는 경우 매번 모든 연결 설정을 다시 입력하는 것이 지루한 경우가 있습니다. 이를 더 쉽게 하기 위해 별칭을 사용할 수 있습니다.

설정은 단일 사용자의 경우 ~/.ssh/config에 저장되고 모든 사용자의 경우 전역적으로 /etc/ssh/ssh_config에 저장됩니다.

예시 구성 여러 서버를 설명할 수 있습니다. 자세한 내용은 남자 ssh_config(혼동하지 마세요. sshd_config)

Host AliasName # 임의의 호스트 이름 HostName 1.2.3.4 # IP와 호스트 이름을 모두 지정할 수 있습니다(DNS가 실행 중인 경우) User YourUserName # 사용자가 로컬 사용자와 일치하지 않는 경우 Port YourSSHPort # 비표준 포트인 경우

그런 다음 다음 명령을 사용하여 서버에 연결할 수 있습니다.

SSH 별칭 이름

SSH 에이전트

연결 문제 진단

    연결 로그 분석:

ssh -vvv 사용자@ 호스트

    클라이언트 및 서버 구성 파일 분석.

구성 파일의 위치는 다음에서 찾을 수 있습니다.

맨 SSH 맨 SSHD

스마트 카드 사용

1. Windows + Putty SC의 클라이언트 부분뿐만 아니라 인증서 생성 및 공개 키 내보내기는 웹 사이트에 설명되어 있습니다. http://habrahabr.ru/post/88540/ 여기에 설명된 Key Manager 추가 기능은 다음과 같습니다. 이전 버전의 Firefox에서만 사용할 수 있습니다. Windows용 버전 3.5에서 테스트되었습니다. 추가 기능에 대한 직접 링크: https://addons.mozilla.org/ru/firefox/addon/key-manager/

2. 서버를 준비합니다. sshd 구성이 공개 키를 사용한 인증을 허용하는지 확인해야 합니다. 이렇게 하려면 "sshd_config" 파일에서 "PubkeyAuthentication" 매개변수 값을 "yes"로 지정해야 합니다. 그런 다음 이전에 얻은 공개 키(한 줄)를 "~/.ssh/authorized_keys" 파일에 추가합니다. ".ssh/authorized_keys" 파일은 공개 키를 사용하여 로그인할 사용자의 홈 디렉터리에 있습니다.

3. Linux의 클라이언트 부분. 매개변수 없이 OpenSSH 패키지를 다시 빌드해야 합니다. 예를 들어 –prefix=/usr과 같이 디렉터리 접두사만 지정하는 것이 좋습니다. 또한 구성 파일이 /usr/etc에 있음을 참고하세요. 시작하기 전에 opensc-lite-devel, zlib-devel, openssl-devel 패키지가 필요합니다. 스마트 카드 드라이버를 설치합니다. 편의를 위해 ssh_config 구성(sshd_config와 혼동하지 마십시오)에서 pkcs 라이브러리에 대한 경로를 지정하십시오: PKCS11Provider=<путь к библиотеке>

4. 클라이언트에서 ssh user@host를 실행합니다. 스마트 카드(토큰)가 연결되면 비밀번호를 입력하라는 메시지가 표시되고 SSH 세션에 로그인됩니다.

사용 중 발생할 수 있는 문제

SSH 서버가 있는 터미널에서 작업할 때 수정 사항을 저장하기 위해 많은 편집기에서 사용되는 일반적인 키 조합 Ctrl + S를 사용하면 표면적으로 세션 정지와 유사한 XOFF 명령이 실행됩니다. 그러나 그렇지 않습니다. 서버는 계속해서 입력 문자와 명령을 받아들이지만 이를 화면에 표시하지는 않습니다. 이 곤경에서 벗어나려면 Ctrl + Q 조합을 사용하여 XON 모드를 다시 켜십시오.

연결

즉, user1은 자신(/home/user1/.ssh/keys 파일)과 다른 사용자 모두에 등록될 수 있으며, 이를 통해 자신의 컴퓨터에서 "자신"과 "다른 사용자" 모두에 로그인할 수 있습니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: