Tutoriel Linux

Linux 서버에 PuTTY로 연결하기

Débutant2 min de lecture

PuTTY를 사용하여 SSH 세션을 열려면 서버의 주소, SSH 포트, 허가된 Linux 계정 및 예정된 인증 방법이 필요합니다. 첫 번째 연결 시, 경고를 수락하거나 비밀을 입력하기 전에 독립된 채널을 통해 서버의 지문을 확인하십시오.

원격 Linux 관리용으로 서버에 연결된 워크스테이션
PuTTY는 Linux 서버에서 SSH 세션을 열기 위한 클라이언트 역할을 합니다.

PuTTY는 Windows에서 실행되는 클라이언트이며, sshd는 Linux 서버에서 응답하는 SSH 서비스입니다. 아래 단계는 이미 구성된 서버에 처음 연결하는 과정을 다룬 것으로, SSH 정책을 변경하지 않습니다.

주소, 포트 및 Linux 계정 준비하기

  • 공식 다운로드 페이지에서 설치된 PuTTY.
  • 서버의 DNS 이름 또는 IP 주소와 관리자에게 전달된 SSH 포트. 포트 22는 일반적이지만, 확실한 것은 아닙니다: 네트워크 포워딩에 따라 클라이언트에 다른 포트를 제공할 수도 있습니다.
  • 부여받은 Linux 계정의 이름. 이는 반드시 Windows 계정일 필요는 없으며, root로 로그인해야 한다고 가정하지 마십시오.
  • 서버에서 허용하는 인증 방법: 비밀번호, 미리 준비된 개인 키, 또는 관리자가 부여하는 다른 메커니즘.
  • 서버 호스트 키의 지문, 이는 호스팅 제공업체의 콘솔 또는 알려진 관리자에게서 받을 수 있습니다.

액세스가 VPN, 점검 서버, 또는 허용된 주소 목록을 통해 진행되는 경우, PuTTY를 열기 전에 예정된 경로를 사용하십시오. 개인 주소는 해당 라우팅이 없으면 인터넷에서 사용할 수 없습니다. 서버는 SSH 연결을 이미 수용해야 하며, OpenSSH 설치 및 강화를 이 절차에 포함하지 않습니다.

PuTTY에서 SSH 세션 구성하기

Session 카테고리에서 DNS 이름이나 IP 주소를 Host Name (or IP address) 필드에 입력하되 https://나 페이지 경로는 포함하지 마십시오. Connection type에서 SSH를 선택한 후, 관리자에게 전달된 포트를 입력하십시오.

프롬프트 login as:에 Linux 계정을 입력할 수 있습니다. 미리 입력하려면 Connection > Data를 열고 Auto-login username에 정보를 입력하십시오. 관리자가 구체적인 지시를 하지 않는 한 SSH 및 암호화 옵션은 기본값으로 두십시오: SSH를 Telnet으로 대체하지 마십시오.

이 설정을 유지하려면 Session으로 돌아가 Saved Sessions에 이름을 입력한 후 Save를 클릭하십시오. 이후 연결할 때는 이 세션을 선택하고 Load를 클릭한 다음 Open을 클릭하십시오. 수정 후 다시 저장하십시오. 세션은 연결 매개변수를 유지하지만 비밀번호를 기억하게 하지는 않습니다.

PuTTY의 공식 문서에서는 연결 필드와 호스트 키 경고를 설명합니다, 그리고 세션 저장 및 로드에 대한 구성 장을 다룹니다.

수락하기 전 서버의 지문 확인하기

PuTTY는 첫 연결 시 경고를 표시할 수 있습니다: 이 서버의 호스트 키는 아직 캐시에 기록되지 않았습니다. 이 키는 머신을 식별합니다. 이는 사용자 키와 다르며 사용자가 계정을 개설할 권한이 있음을 증명하는 데 사용될 수 있습니다.

Accept를 클릭하기 전에 PuTTY가 표시하는 알고리즘과 SHA256 지문을 독립적인 방법을 통해 검증한 값과 비교하십시오. 예를 들어, 호스팅 제공업체의 콘솔에서 확인할 수 있습니다. 신뢰할 수 있는 Linux 서버의 콘솔에서 관리자는 다음 명령어로 Ed25519 공개 키의 지문을 표시할 수 있습니다. 이를 PowerShell이나 PuTTY 창에서 연결 전에 실행하지 마십시오.

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256

동일한 유형의 지문을 비교하십시오: PuTTY가 RSA 키를 표시하는 경우 해당 RSA 공개 키의 지문을 요청하거나 표시하십시오. 이 검증을 위해 절대 개인 키를 복사하지 마십시오. 위 명령은 공개 Ed25519 키 파일을 사용합니다.

Accept는 호스트 키를 기억합니다. Connect Once는 이를 기억하지 않고도 연결을 허용하지만 지문 확인을 면제하지 않습니다. 값이 일치하지 않거나 키가 설명 없이 변경되었거나 이를 검증할 독립적인 방법이 없다면 Cancel을 선택하고 관리자에게 확인하십시오. 재설치나 예정된 키 회전이 변화의 이유일 수 있으나, 캐시를 업데이트하기 전에 확인해야 합니다.

변경된 키 경고는 자동 수락하거나 모든 저장된 키를 삭제하여 수정할 수 없습니다. Windows의 PuTTY 호스트 캐시는 OpenSSH에서 사용되는 ~/.ssh/known_hosts 파일과 다릅니다; ssh-keygen -R 명령은 PuTTY 캐시를 정리하지 않습니다. 오프라인 검증에 대해 이해하려면 호스트 키 경고의 검증에 대한 기사를 참조하십시오: 그 명령어 known_hosts는 OpenSSH에 해당하며 PuTTY에는 해당되지 않습니다.

PuTTY 문서에서는 Accept, Connect Once 및 Cancel 선택에 대해 설명합니다. 공개 키의 지문을 계산하려면 OpenSSH ssh-keygen 매뉴얼을 참조하십시오.

비밀번호 또는 키로 인증하기

서버에서 비밀번호를 허용하는 경우

지문을 확인한 후에, 사전 입력한 것이 아니라면 login as:에 Linux 계정을 입력하십시오. Enter를 누르고 계정의 비밀번호를 입력한 후 확인하십시오. 비밀번호 입력 중에는 아무것도 표시되지 않습니다: 글자나 별표도 나타나지 않습니다. 정상입니다. 거부되는 경우에는 계정, 키보드 레이아웃 및 대문자 잠금 상태를 확인하십시오, 시도를 여러 번 하지 마십시오.

서버가 비밀번호 인증을 금지하거나 키 및 추가 단계를 요구할 수 있습니다. 이 경우 예정된 방법을 사용하거나 관리자에게 절차를 문의하십시오; 금지된 방법을 활성화하여 정책을 우회하지 마십시오.

PuTTY 형식 (.ppk)의 개인 키가 있는 경우

PuTTY에서 Connection > SSH > Auth > Credentials를 열고 인증용 개인 키 파일을 Private key file for authentication에서 지정하십시오. 그 후 Session으로 돌아가 설정을 저장하십시오. 해당 Linux 계정에 대해 이미 허용된 공개 키가 있어야 합니다. 개인 키는 로컬에 유지하며 서버로 전송하지 마십시오.

키에 비밀 구문(패스프레이즈)이 있는 경우 PuTTY가 로컬 키 잠금을 해제하기 위해 요청할 수 있습니다. 이는 Linux 계정의 비밀번호가 아닙니다. OpenSSH 개인 키가 있고 .ppk 파일이 아닌 경우, PuTTYgen을 통해 Conversions > Import key를 사용하여 가져오고 PuTTY 형식으로 저장할 수 있습니다. 키 생성, 변환 및 배포에 대한 전체 가이드는 이 첫 연결 절차와는 별개입니다; Linux에서 배포하는 방법은 ssh-copy-id로 공개 키를 설치하는 방법를 참조하십시오. 이 명령은 PuTTY의 기능이 아니며 Windows에서 항상 사용할 수 있는 것은 아닙니다.

현재 메뉴는 PuTTY의 Auth > Credentials 섹션에서 설명합니다. 또한 PuTTY 공개 키 장은 PuTTYgen으로 가져오기 및 authorized_keys의 역할을 다룹니다.

얻은 쉘 확인하기

연결된 후 PuTTY 터미널에서 다음 명령어를 실행하십시오: 이는 원격 Linux 쉘에서 실행됩니다. 비밀을 표시하지 않습니다.

whoami
hostname
pwd
printf '%sn' "$SSH_CONNECTION"

whoami가 예상되는 계정을 반환하고 hostname가 예상된 서버와 일치하는지 확인하십시오. pwd는 현재 디렉터리를 나타냅니다. SSH_CONNECTION이 설정되어 있으면, 이 세션을 위해 클라이언트와 서버의 주소 및 포트를 나타냅니다. 프록시나 NAT 변환이 있는 경우 이러한 값은 필수적으로 공개 주소가 아닙니다; 일부 환경에서는 이 변수를 정의하지 않습니다.

표시된 호스트 이름은 인증 전에 수행한 지문 확인을 대체하지 않습니다. 작업을 마친 후에는 다음과 같이 세션을 정상적으로 닫으십시오:

exit

인증이 성공하였지만 쉘이 열리지 않는 경우, 계정이 제한되거나 대화형 쉘이 없을 수 있습니다. 관리자에게 계정 구성을 확인하도록 요청하십시오. 이 검사를 가능하게 하기 위해 서버를 변경하지 마십시오. 마지막으로 PuTTY에서 기록된 세션을 다시 로드하여 호스트, 포트 및 자동 입력된 계정이 모두 예상되는지 확인하십시오.

접근을 차단하지 않고 PuTTY 오류 진단하기

PuTTY 창의 메뉴에서 Event Log를 열고 정확한 메시지 및 연결이 중단된 단계를 기록하십시오. 주소나 인프라 세부정보가 포함된 로그를 공유하지 말고 숨기십시오.

연결 거부 또는 지연

Windows PowerShell을 사용하여 관리자가 제공한 TCP 포트를 테스트할 수 있습니다. 두 값을 서버의 것으로 바꾸십시오: 이 명령은 지문이나 자격 증명을 확인하지 않습니다.

Test-NetConnection -ComputerName serveur.example.net -Port 22

TcpTestSucceeded를 확인하십시오. False 값은 주소, 라우팅, 필터링, 또는 잘못된 포트로 인한 것일 수 있으며, 단독으로 sshd가 중지되었다고 증명하지 않습니다. 차단된 핑만으로도 SSH에 접근할 수 없다고 결론 내릴 수 없습니다.

  • « Network error: Connection refused »: TCP 연결이 거부되었습니다. 이름이나 주소, 포트 및 독립적인 콘솔이 있다면 실제로 수신 대기 중인 포트를 확인하십시오. 명시적인 네트워크 거부도 이 메시지를 발생시킬 수 있습니다.
  • « Network error: Connection timed out »: 주어진 시간 내에 응답이 없습니다. 주소, DNS, VPN 또는 경로를 확인한 후, 필터 규칙 및 호스팅 또는 NAT의 규칙을 검토하십시오. 이 메시지는 잘못된 비밀번호에 관한 것이 아닙니다.

신뢰할 수 있는 콘솔에 접근할 수 있다면, 이 읽기 전용 검사는 Linux 서버에서 수행되며 PowerShell이나 아직 성공하지 않은 PuTTY 세션 내에서 수행하지 마십시오:

sudo ss -ltnp
sudo systemctl status ssh --no-pager
sudo systemctl status sshd --no-pager
sudo systemctl status ssh.socket --no-pager
sudo journalctl -u ssh -n 50 --no-pager
sudo journalctl -u sshd -n 50 --no-pager

ss를 사용하여 실제로 수신 대기 중인 주소와 포트를 검색하십시오: 루프백 인터페이스에서만 수신 대기하는 경우 외부 클라이언트에 응답하지 않습니다. Debian이나 Ubuntu에서는 systemd 유닛이 일반적으로 ssh라고 하며, 많은 RHEL 또는 Fedora 배포에서 sshd라고 하며, 일부 Ubuntu 설치에서는 ssh.socket를 사용할 수 있습니다. 배포에 적합한 점검만 실행하십시오. “Unit not found”는 단독으로 고장을 증명하지 않습니다. 로그에서 존재하는 유닛과 시도한 시간을 확인하십시오; 로그가 비어 있다면 잘못된 유닛이나 대상을 참고하고 있을 수 있습니다.

서비스를 재시작하지 않고 진단을 심화하려면 우분투에서 SSH 서비스 확인하기에 대한 기사를 확인하십시오. 이 진단은 의도적으로 제한적이며; 거부 또는 타임아웃과 같은 구체적인 상황은 별도의 가이드를 필요로 합니다. 방화벽을 비활성화하지 말고, StrictModes를 완화하지 말고, 첫 연결을 시도하기 위해 SSH를 자동으로 재시작하지 마십시오.

인증 또는 키 로드 실패

  • « Access denied » 또는 « Authentication refused »: SSH 교환이 시작되었습니다. Linux 계정, 허용된 방법 및 입력 사항을 확인하십시오. 관리자는 시도 시간에 로그를 가까이 비교할 수 있으며, root 접근을 활성화하거나 금지된 방법을 활성화하지 마십시오.
  • « Unable to use key file » 또는 « Couldn’t load private key »: PuTTY가 올바른 키를 가리키고 있으며 지원되는 형식인지 확인하십시오. OpenSSH 키는 가져온 후 PuTTY 형식으로 저장해야 할 수 있습니다. .pem 파일의 이름을 .ppk로 바꾸는 것으로 변환되지 않습니다.
  • « Server refused our key » 또는 « Server refused our public key »: 키가 대상 계정과 일치하고 그 공개 키가 허용되어 있는지 확인하십시오. 이미 접근 가능한 대상 계정의 콘솔에서 경로와 권한을 확인하십시오:
ls -ld "$HOME" "$HOME/.ssh"
ls -l "$HOME/.ssh/authorized_keys"

이 명령어는 접근 가능한 Linux 계정에서 실행되어야 합니다. 소유자, 경로, 권한 및 전체 공개 키 행이 있는지 확인하십시오. 상황을 이해하지 못한 상태에서 소유자나 권한을 재귀적으로 변경하지 마십시오; StrictModes를 비활성화하여 거부를 우회하지 마십시오.

  • « No supported authentication methods available »: PuTTY가 제안한 방법이 서버의 정책에 따라 유효하지 않습니다. 요청된 키나 메커니즘을 사용하거나 관리자에게 문의하십시오; 거부된 방법을 활성화하지 마십시오.
  • « Too many authentication failures »: 너무 많은 키나 시도가 제안되었습니다. 때때로 이는 에이전트에 의해 발생합니다. 계획된 키를 선택하고 Pageant를 사용하고 있는 경우 이를 확인하십시오; 서버 쪽에서 임의로 제한을 높이지 마십시오.
  • « Network error: Software caused connection abort » 또는 « Connection reset by peer »: 연결이 네트워크에 의해 중단되거나 원격에서 닫혔습니다. Event Log를 서버 로그와 같은 시간에 비교하십시오. keepalive는 경로, 잘못된 키, 초기 거부를 수정하지 않습니다.
  • 블랙 창에 텍스트 없음: 이는 비밀번호 입력 중의 에코가 없거나 SSH 응답 대기를 하고 있거나 대화형 쉘이 할당되지 않은 계정일 수 있습니다. 열린 창만으로는 연결되었다고 증명되지 않습니다.

독립 관리자 접근이 가능하다면 sudo /usr/sbin/sshd -t를 사용하여 Linux 서버에서 설정 구문을 확인할 수 있습니다. 이 검사는 네트워크를 테스트하지 않으며, 여기에서 귀하의 머신에서 실행된 것이 아닙니다. 구성을 변경하지 말고 단순한 연결 테스트로 서비스를 재시작하지 마십시오.

PuTTY를 닫기 전에 마지막으로 확인하십시오: 주소 및 포트는 전달된 것이고, 계정은 예상되는 Linux 계정이며, 지문은 독립 소스로 비교되었고, 인증은 서버 정책을 따르며 whoami 및 hostname이 목표 세션을 확인합니다.