비밀번호를 입력하지 않고 Windows에서 Linux로 SSH


11

암호를 입력하지 않고 Windows에서 Linux로 ssh / scp를 사용하려고합니다.

이것은 내가 한 일이며 작동하지 않는 것 같습니다.

  • 퍼티 키 생성기를 사용하여 공개 및 개인 키 생성 (Windows)
  • 파일을로 저장 id_rsa.pub하고id_rsa
  • 그들을 복사 ~/.ssh
  • Linux 상자에 id_rsa.pub를 추가했습니다. ~/.ssh/authorized_keys
  • 그런 다음 sshWindows에서 Linux 상자 로 이동하려고 시도하고 여전히 암호를 입력해야합니다

뭔가 빠졌습니까?

답변:


10

Windows에서 인증 에이전트를 실행해야합니다.

예를 들어, PageantPuTTY (그래픽 SSH 클라이언트) 또는 Plink (명령 줄에 해당) 와 함께 사용됩니다 .

Pageant에게 SSH 서버의 공개 키를 알려 주어야합니다. 그 후 백그라운드에서 실행되는 동안 서버의 인증 요청을 처리합니다.


2
참고 : (이것은 나에게 분명하지 않았습니다.) Pageant를 열면 오른쪽 하단의 알림 영역에 아이콘으로 열립니다. 마우스 오른쪽 단추로 클릭하고 키 추가를 클릭 하고 puttygen에서 생성 된 .ppk 파일을 선택하십시오.
badjr

8

당신은 미인 이 필요합니다 .

PuTTY 및 Pageant를 사용한 비디오 비밀번호없는 로그인을 참조하십시오 . 그리고 / 또는 블로그 게시물의 노하우 : 퍼티와 패스워드가없는 SSH 인증 .


1
비디오 대신 텍스트 기반 자습서에 연결하십시오.
코더

블로그 링크가 깨졌습니다. 이 하나의 시도 tecmint.com/ssh-passwordless-login-with-putty
카이 왕

2
블로그 링크가 깨져서 답변이 링크보다 더 정확한 이유입니다.
Ramhound

5

Plink (Putty의 일부) 사용해보기

 plink -v youruser@yourhost.com -pw yourpw "some linux command"

3
올바른 답변을 얻으려면 +1하지만 비밀번호보다 공개 / 개인 키 쌍을 사용하는 것이 좋습니다.
Ted Percival

대안에도 불구하고 plink를 사용 하면 일반적인 터미널을 사용할 수 없습니다. 예를 들어 화살표 키는 bash 기록에서
PYK

3

SSH 키 인증 설정은 약간 까다로울 수 있습니다. 모든 기지를 덮고있는 것 같습니다. 사람들을 조심스럽게 사로 잡는 것 중 하나는 .ssh디렉토리와 디렉토리의 내용이 본인이 소유하고 귀하 만 읽을 수 있고 읽을 수 있도록하는 것입니다.

이것을 모든 .ssh디렉토리 에서 실행하십시오 :

chmod -R 700 on ~/.ssh

그래도 문제가 해결되지 않으면 명령 에 추가 -v하여 자세한 로깅 을 설정하십시오 ssh( -vs자세한 내용을 위해 최대 3 초 까지 추가 할 수 있음 ).


3

나는 이것을 사용했다 :

c : \> type c:\users\my_name\.ssh\id_rsa.pub | ssh root@172.110.1.171 "cat >> ~/.ssh/authorized_keys"


2

귀하의 키가 비밀번호로 보호되어 있지 않다고 가정하고 귀하가 얻는 것은 키 비밀번호 요청이 아닙니다.

~ / .ssh는 창쪽의 퍼티에서 사용되지 않으며 퍼티에는 기본 개인 키 설정이 없습니다. cygwin과 같은 명령 행 ssh 클라이언트를 사용하는 경우 집에서 .ssh 디렉토리를 작성하면 작동합니다. 퍼티에서 세션을 구성하고 저장해야합니다.

퍼티 구성 대화 상자에서 연결-> 데이터를보고 자동 로그인 사용자 이름 필드를 채우십시오. 그런 다음 연결-> ssh-> 인증으로 이동하여 개인 키를 올바르게 설정하십시오. 그런 다음 세션 대화 상자로 돌아가서이 세션을 저장하십시오. 원하는 경우 호스트 이름을 설정할 수도 있습니다.

저장된 세션이 있으면 'putty -load "savedsession"'을 사용할 수 있습니다.


또한 대상 시스템의 chmod 700 ~ / .ssh 및 chmod 644 ~ / .ssh / authorized 키. 지시를 따르고 권한을 올바르게 설정하면 나에게 도움이되었습니다.
물집 땅콩

1

홈 디렉토리에 대한 권한을 변경해야 할 수도 있습니다.

chmod 755 ~

1

ID 개인 키를 제공하는 옵션을 Windows 7사용하여 정확하게이 작업을 수행 할 수있었습니다 -i.

ssh -i X : \ win-path \ to \ private-key remoteuser@remote.host.com

원격 호스트에서 승인 된 키가 있음 /etc/ssh/authorized_keys/remoteuser및 있음을 제외하고 /etc/ssh/sshd_config변경했습니다.

#AuthorizedKeysFile     .ssh/authorized_keys
AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

하지만 SSH 원격 구성이 중요한지 모르겠습니다.


1

크로스 플랫폼 ssh명령 줄 도구 ssh-keygen& 만 있으면 ssh-copy-id됩니다. Windows 용 git에 포함되어 있습니다.

git-installed bashshell 에서이 작업을 수행하십시오 .

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :

ssh-keygen.exe -t rsa -b 2048 
ssh-copy-id -i ~/.ssh/id_rsa.pub  $remoteuser@$remotehost

# These two chmod lines are needed on unix platforms, probably not on Windows. 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa

또는 PowerShell에서이 스크립트를 실행하십시오.

Param(
  [Parameter()][string]$keyfile="id_rsa",
  [Parameter()][string]$remotehost,
  [Parameter()][string]$remoteuser
  )
write-host "# ---------------------------------------------------------------------------------#"
write-host "# Create an RSA public/private key pair, and copy the public key to remote server  #"
write-host "#                                                                                  #"
write-host "# /superuser/96051                                            #"
write-host "#         ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805    #"
write-host "#                                                                                  #"
write-host "# ---------------------------------------------------------------------------------#"

write-host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-host "And copied to $remoteuser@$remotehost"
write-host ""
write-host "You will need a password for the copy operation."
write-host ""

if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"

# ssh-copy-id somehow didn't work in Powershell so I called it via bash
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"

# I'm not sure if these two chmod lines work on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"

이 후, 암호없이 로그인이 모두 작동해야 ssh하고 scp.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.