이 기사에서는 원격 서버/컴퓨터에 안전하게 액세스하기 위해 Windows에서 RSA 키로 SSH 인증을 구성합니다. Windows에서 RSA 키(인증서)를 생성하고 키 기반 인증(암호 없이 원격 호스트에서 인증 가능)을 위해 Windows 10/Windows Server 2019에서 내장 OpenSSH 서버를 구성하는 방법을 보여줍니다.
SSH 키 기반 인증은 Linux 세계에서 널리 사용되지만 Windows에서는 아주 최근에 등장했습니다. 클라이언트의 공개 키가 SSH 서버에 추가되고 클라이언트가 연결을 시도하면 서버가 클라이언트에 해당 개인 키가 있는지 확인하는 아이디어입니다.
내용:
- Windows에서 SSH(RSA) 생성
- SSH 키를 사용하여 인증하도록 Windows에서 OpenSSH 서버 구성
- 로컬 관리자에서 SSH 키를 사용하여 Windows에 로그인하는 방법
Windows에서 SSH(RSA) 생성
OpenSSH를 실행하는 원격 Windows 서버에 연결하는 데 사용할 클라이언트 컴퓨터에서 두 개의 RSA 키(공개 및 개인 키)를 생성해야 합니다. 개인 키는 클라이언트 측에 저장되고(누구에게도 전달하지 마십시오!) 공개 키는 authorized_keys에 추가됩니다. SSH 서버에 있는 파일. Windows 클라이언트에서 RSA 키를 생성하려면 OpenSSH 클라이언트를 설치해야 합니다.
Windows 10 1809(이상) 및 Windows Server 2019에서 OpenSSH 클라이언트는 별도의 기능으로 설치됩니다.
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
표준(비권한) PowerShell 세션을 실행하고 다음 명령을 사용하여 한 쌍의 RSA 2048 키를 생성합니다.
ssh-keygen
개인 키를 보호하기 위해 암호를 입력하라는 메시지가 표시됩니다. 비밀번호를 지정하면 SSH 인증에 이 키를 사용할 때마다 비밀번호를 입력해야 합니다. 암호를 입력하지 않았습니다(권장하지 않음).
Ssh-keygen은 .ssh를 생성합니다. 현재 Windows 사용자의 프로필(C:\Users\your_username)에 디렉터리를 만들고 여기에 2개의 파일을 배치합니다.
- id_rsa – 개인 키
- id_rsa.pub – 공개 키
RSA 키를 만든 후 SSH 에이전트에 개인 키를 추가할 수 있습니다. 개인 키를 편리하게 관리하고 인증에 사용할 수 있는 서비스입니다. SSH 에이전트는 개인 키를 저장하고 현재 사용자의 보안 컨텍스트에서 제공합니다. ssh-agent 서비스를 실행하고 PowerShell 서비스 관리 명령을 사용하여 자동 시작되도록 구성합니다.
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
ssh-agent 데이터베이스에 개인 키 추가:
ssh-add "C:\Users\youruser\.ssh\id_rsa"
또는 다음과 같이:
ssh-add.exe $ENV:UserProfile\.ssh\id_rsa
SSH 키를 사용하여 인증하도록 Windows에서 OpenSSH 서버 구성
그런 다음 클라이언트에서 생성한 공개 키를 SSH 서버에 복사합니다(이 예에서는 Windows 10 1903을 실행하고 OpenSSH가 구성된 원격 컴퓨터).
우리는 이미 Windows에서 OpenSSH 서버를 더 자세히 구성하는 방법에 대해 논의했습니다.id_rsa.pub 복사 .ssh에 파일 SSH 서버에 연결하는 데 사용할 사용자 프로필의 디렉터리입니다. 예를 들어 관리자가 있습니다. 내 Windows 10의 사용자이므로 C:\Users\admin에 키를 복사해야 합니다. \.ssh\authorized_keys.
SCP를 사용하여 공개 키를 SSH 서버에 복사할 수 있습니다.
scp C:\Users\youruser\.ssh\id_rsa.pub [email protected]:c:\users\admin\.ssh\authorized_keys
이제 암호 없이 Windows SSH 서버에 연결할 수 있습니다. 개인 키에 대한 암호(암호)를 설정하지 않은 경우 원격 Windows 호스트에 자동으로 연결됩니다.
기본 SSH 클라이언트를 사용하여 원격 호스트에 연결하려면 다음 명령이 필요합니다.
ssh (username)@(SSH server name or IP address)
예:
admin 아래의 IP 주소가 192.168.1.15인 원격 SSH 서버에 연결하려는 것을 의미합니다. 계정. SSH 에이전트는 자동으로 이전에 저장된 개인 키를 사용하여 인증을 시도합니다.
ssh-agent 서비스를 사용하여 SSH 키를 관리하지 않으려면 SSH 인증에 사용할 개인 키 파일의 경로를 지정할 수 있습니다.
ssh [email protected] -i "C:\Users\youruser\.ssh\id_rsa"
RSA 키를 사용하여 SSH 서버에 연결할 수 없고 여전히 암호를 입력하라는 메시지가 표시되면 연결하려는 사용자 계정이 로컬 서버 관리자 그룹(그룹 SID S-1-5-32-544)입니다. 나중에 다루도록 하겠습니다.
로컬 관리자에서 SSH 키를 사용하여 Windows에 로그인하는 방법
OpenSSH는 Windows 로컬 관리자 권한이 있는 사용자에 대해 특별한 키 기반 액세스 설정을 사용합니다.
먼저 C:\ProgramData\ssh\administrators_authorized_key 키 파일을 사용합니다. authorized_keys 대신 s 사용자 프로필의 파일입니다. 이 텍스트 파일에 SSH 키를 추가해야 합니다(보안을 위해 Administrators 그룹과 SYSTEM만 이 파일을 읽을 수 있는 권한이 있어야 합니다).
사용자 프로필의 authorized_keys 파일을 사용하고 공개 키 데이터를 administrators_authorized_keys 파일로 이동하지 않으려면 OpenSSH 구성 파일(C:\ProgramData\ssh\sshd_config ).
다음 줄을 주석 처리합니다.#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
sshd_config 파일에서 RSA 키를 사용하여 Windows 액세스 허용:
PubkeyAuthentication yes
그리고 ssh 비밀번호 로그인 비활성화:
PasswordAuthentication no
sshd_config에 변경 사항을 저장한 후 sshd 서비스를 다시 시작하는 것을 잊지 마십시오.
restart-service sshd
여기에 또 다른 중요한 사항이 있습니다. 이전 OpenSSH 버전에서는 NT Service\sshd에 authorized_keys 파일에 대한 읽기 권한을 부여해야 했습니다.
그렇게 하려면 다음 중 하나를 수행해야 합니다.
- OpenSSHUtils 모듈 설치 :
Install-Module -Force OpenSSHUtils -Scope AllUsers
. 파일 권한을 변경하려면 다음 명령을 실행하십시오. Repair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys
- NTFSSecurity 모듈 또는 icacl을 사용하여 파일에 대한 NTFS 권한 변경
- 또는 StrictModes를 비활성화할 수 있습니다. sshd_config 파일에서 기본적으로 이 모드는 활성화되어 있으며 공개 및 개인 키가 제대로 보호되지 않는 경우 키 기반 인증을 방지합니다.
#StrictModes yes
행의 주석 처리를 제거합니다. ,StrictModes no
로 변경합니다. .
따라서 공개 RSA 키(인증서)를 사용하여 Windows에서 SSH 인증을 구성했습니다. 이제 이 인증 방법을 사용하여 원격 서버에 안전하게 액세스하고 SSH 터널의 포트를 자동으로 전달하고 스크립트를 실행하고 기타 자동화 관련 작업을 수행할 수 있습니다.