it-swarm-ko.com

암호를 입력 할 필요가 없도록 SSH를 설정하려면 어떻게합니까?

호스트에 연결할 때 암호를 입력 할 필요가 없도록 SSH를 설정하려면 어떻게합니까?

147
Richard Hoskins

SSH 키를 생성하십시오 (없는 경우).

GNOME을 사용하는 경우, 해마 응용 프로그램 ( "암호 및 암호화 키")을 사용하여 수행 할 수 있습니다. File -> New -> Secure Shell Key.

터미널을 선호한다면 ssh-keygen -t <type>를 실행하여 키 쌍을 생성하십시오. 유효한 키 쌍 유형은 다음과 같습니다.

  • rsa : 기본값
  • dsa : 1024 비트 키로 제한된 것을 제외하면 다소 비슷합니다.
  • ecdsa : 작은 키를 사용하는 것과 동일한 보안이지만 SSH 소프트웨어에서는 상대적으로 새롭고 다소 드문 경우입니다.
  • ed25519 : 높은 보안 성 (사이드 채널 공격에 약하고 난수 생성기가 약함). 매우 빠른 서명 생성. 매우 새로운. OpenSSH> = 6.5 에서만 사용 가능합니다.

프로그램에서 암호문 와 새 키를 저장할 위치를 묻습니다. 권장되는 기본 경로는 다른 모든 도구에서 찾을 수 있으므로 사용하는 것이 좋습니다.

원격 서버에 공개 키 업로드

다시, seahorse는 당신을 위해 종종 할 수 있습니다. My Personal Keys에서 SSH 키를 마우스 오른쪽 버튼으로 클릭하고 Secure Shell에 대해 Configure 키를 선택하십시오.

또는 터미널에서 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected].

또는 완전히 수동으로 단계별로 :

  1. 원격 호스트의 원격 사용자 홈 디렉토리에 .ssh라는 디렉토리 (아직없는 경우)를 만듭니다.
  2. 해당 디렉토리에서 authorized_keys라는 파일을 만듭니다 (아직없는 경우).
  3. 원격 umask이 평소보다 자유주의적인 경우 파일을 그룹 쓰기 가능으로 만들지 마십시오 : chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. 마지막으로, 어떻게 든 로컬 _ = 공개 키 (~/.ssh/id_rsa.pub)의 내용을 원격 ~/.ssh/authorized_keys 파일에 복사 (추가)합니다.

Ssh 에이전트에 키로드

비공개 키를 ssh agent에로드하면 해독 된 키가 메모리에 저장됩니다. 쉘로 서버에 연결할 때마다 비밀번호를 다시 입력하지 않아야합니다.

첫째, 에이전트를 시작하거나 시작된 통신 소켓의 경로를 변수에로드해야합니다. 터미널에서 ssh-agent를 실행하면 에이전트 변수를 할당하고 설정하기위한 명령이 생성됩니다. 이러한 명령은 다른 터미널에서 사용하기 위해 파일로 저장할 수 있습니다. 또는 이러한 명령을 실행하여 다른 터미널에서 동일한 에이전트를 다시 사용하는 것을 잊어 버릴 수도 있습니다. 예 : eval $(ssh-agent).

키를로드하는 것은 ssh-add를 실행하고 패스 구문을 제공하는 간단한 문제입니다.

GNOME을 사용하고 있다면 gnome-keyring-daemon은 일반적으로 ssh-agent와 동일한 SSH 에이전트 기능을 제공하므로 아무 것도 시작하지 않아도됩니다. 그놈은 로그인 할 때 자동으로 키를로드하고 잠금 해제합니다.

암호없이 원격 서버에 셸

모든 것이 올바르게 완료되면 ssh [email protected]를 사용하면 암호를 입력하라는 메시지가 표시되지 않습니다. 에이전트가 아닌 에이전트에 문제가있는 경우 사용자 계정의 암호가 아닌 키의 암호문을 입력하라는 메시지가 표시됩니다.

올바른 키가 에이전트에로드되면 사용자 계정 암호를 입력하지 않고도 통신을 위해 ssh를 사용하는 모든 것이 작동합니다. scp, sftprsync와 같은 프로그램은 이것을 사용합니다.


노트:

  • SSHv1은 매우 안전하지 않고 현재는 사용되지 않으므로 SSHv2 키만 있으면됩니다.
  • RSA 또는 DSA만으로도 한 가지 유형의 키만 있으면됩니다. (ed2519 및 ECDSA는 모두 최신이므로 지원되지 않습니다.
  • 이 모든 단계는 RSA 및 DSA 키에서 동일합니다. DSA를 사용하는 경우 id_dsa 대신 id_rsa를 사용하고 ECDSA는 id_ecdsa를 갖습니다.
  • 3.0 이전의 OpenSSH 서버는 authorized_keys2를 사용했지만, 사용중인 5.0 이전 버전은 찾을 수 없습니다.
  • 이 지침은 OpenSSH 버전 3.0 이상에만 적용됩니다. lsh, ssh.com 및 기타 (Unix 및 not) SSH 서버는이 자습서에 포함되어 있지 않습니다.

예 :

  • 공용 호스트 키를 원격 호스트로 복사 :

     ssh-copy-id -i ~/.ssh/id_rsa.pub myaccount @ remotehost # this 
     
     cat ~/.ssh/id_rsa.pub | ssh myaccount @ remotehost\
     'mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys '또는이 
    
  • 재사용을위한 에이전트 변수 저장 (정교한 예)
     ssh-agent> ~/.ssh/cross-terminal-agent 
    . ~/.ssh/교차 터미널 에이전트 
    
160
grawity

유닉스가 어떤 것인지, 어떤 유닉스에 연결했는지, 어떤 쉘을 사용하고 있는지, 어떤 SSH를 사용하고 있는지 등은 명시하지 않았다. 그래서이 중 일부는 약간 조정해야 할 수도있다. 이것은 합리적으로 최신 버전의 OpenSSH를 기반으로합니다. 이것은 많은 유닉스 변종에 사용됩니다.

이것은 모두 귀하의 로컬 데스크탑 시스템의 것입니다.

ssh-keygen

키 이름에 기본값을 사용해야합니다. 나는 당신이 그 열쇠에 대한 암호를 설정하는 것이 좋습니다, 그렇지 않으면 보안 문제입니다. "-t rsa"는 나쁜 생각은 아니지만 아마도 필요하지는 않습니다.

ssh-copy-id [email protected]

그러면 로그인 할 때 사용하는 비밀번호를 묻는 메시지가 표시되고 authorized_keys 항목이 설정됩니다. (손으로 할 필요 없음)

그럼,이 :

`ssh-agent`

또는 아마도 이것은 :

exec ssh-agent sh

또는:

exec ssh-agent bash

그러면 키를 저장할 수있는 SSH 에이전트가 시작됩니다. 현대의 많은 유닉스 변종에서, 그래픽으로 로그인했다면, 이것은 이미 일어 났을 것이다. 첫 번째 변종 (backticks 포함)은 ssh-agent를 배경에두고 환경 변수를 설정하여 대화를 진행합니다. 두 번째 두 개는 에이전트가 쉘을 실행하도록하므로 셸을 종료하면 에이전트가 종료됩니다.

많은 현대의 유닉스 변종은 이미 그래픽으로 로그인 한 경우 에이전트가 실행되고 있습니다. "ps aux | grep ssh-agent"또는 "ps -ef | grep ssh-agent"시도해보십시오; 이미 실행중인 것이 있으면 사용하십시오.

그런 다음 마침내 :

ssh-add

그것은 암호문을 요구할 것입니다; 당신이 ssh-keygen에 주었던 것을 제공하십시오. 그래픽으로 물어 보는 방법도 있습니다. 그리고 ssh-agent와 ssh-add stuff를 로그인 스크립트에 넣을 수 있습니다 (사용하는 쉘에 따라 설정이 다릅니다). 그러나 유닉스 변종 중 일부는 자동으로 그렇게합니다. 실제로해야 할 일은 키를 생성하고 ssh-copy-id를 사용하여 원격 호스트에 키를 설정하는 것입니다.

이제 "ssh [email protected]"는 인증을 요구하지 않고 작동해야합니다. 그 뒤에는 ssh-agent가 보유하고있는 키를 사용하고 에이전트에게 마술 서명 트릭을 수행하도록 요청합니다.

22
freiheit

Windows에서는 PuTTY PuTTY 에서도이 작업을 수행 할 수 있습니다.

공개/개인 키 쌍이 모두 설정되면 (여기에 다른 답변이 표시됨) PuttyGen이 실행됩니다. 여기에서 이미 설정 한 기존 개인 키를로드 한 다음 PuTTY 개인 키 (ppk)로 저장하십시오.

그런 다음 PuTTY에서 자동 로그인하려는 저장된 세션을 클릭하고로드를 클릭하십시오. 여기에서 왼쪽 창에있는 연결 -> 데이터로 이동하고 해당 원격 서버의 사용자 이름에 "자동 로그인 사용자 이름"유형을 입력하십시오.

PuTTY username entry

그런 다음 Connection -> SSH -> Auth로 가서 PuttyGen에서 만든 ppk를 찾으십시오.

PuTTY private key entry

그런 다음 세션 페이지로 돌아가서 이전에로드 한 세션을 저장하십시오.

아주 비슷한 질문 ServerFault 에서 사용하는 것이 좋습니다 ssh-copy-id , 인증 키 설정과 관련된 모든 단계를 수행합니다.

ssh-copy-id는 ssh를 사용하여 원격 컴퓨터에 로그인하는 스크립트입니다 (아마도 로그인 암호를 사용하므로 여러 개의 ID를 현명하게 사용하지 않은 경우 암호 인증을 사용하도록 설정해야합니다)

또한 원격 사용자의 집, ~/.ssh 및 ~/.ssh/authorized_keys의 권한을 변경하여 그룹 쓰기 기능을 제거합니다 (원격 sshd에 StrictMode가 구성되어 있으면 로그인하지 못하게됩니다).

-i 옵션을 지정하면 ssh-agent에 키가 있는지 여부에 관계없이 ID 파일 (기본값은 ~/.ssh/identity.pub)이 사용됩니다.

필요한 것은 간단합니다.

ssh-copy-id [email protected]

암호를 한번 입력하면 갈 수 있습니다!

3
Chris Bunch

Ssh 키를 설정하는 방법에 대해 이미 이야기 했었지만, 키 체인 ssh-agent 콘솔 프론트 엔드를 사용하면 로그인 당 대신 시스템 프로세스 당 하나만 처리 할 수 ​​있습니다.

GNOME과 KDE 도구가 이미 있지만, 콘솔 중독자 유형이라면, 이것은 훌륭하고 (대부분의 유닉스 시스템에서 사용될 수 있습니다.).

그것을 사용하려면 ~/.bashrc에 다음을 추가하면됩니다 (다른 쉘과 유사 함).

if type keychain >/dev/null 2>/dev/null; then
  keychain --nogui -q <all your SSH/PGP keys>
  [ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
  [ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
3
scetoaux

PuTTY 에는 다음과 같이 바탕 화면에 바로 가기를 만들 수있는 -pw 옵션이 있습니다.

"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
2
Genc Hosting

나는 정말로 매우 짧은 튜토리얼을 작성했다. 정말로 실망했다. 정말로 실망했다. 정말로 긴 튜토리얼은 정말 간단하다. :)

test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"

scp ~/.ssh/id_rsa.pub [email protected]:/tmp/ #type password

ssh [email protected] #type password

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

rm /tmp/id_rsa.pub
2
samthebest

http://linuxproblem.org/art_9.html

당신의 목표

리눅스와 OpenSSH를 사용하여 작업을 자동화하고 싶습니다. 따라서 호스트 A/사용자 a에서 호스트 B/사용자 b로 자동 로그인해야합니다. b. Shell 스크립트 내에서 ssh를 호출하기를 원하기 때문에 암호를 입력하고 싶지는 않습니다.

2
TheTXI
  1. 연결 호스트에서 ssh-keygen를 실행하십시오. (유형을 지정해야한다고하면 ssh-keygen -t rsa을 수행하십시오.) 파일 위치를 묻는 메시지가 표시되면 기본값을 사용하십시오. 암호문을 묻는 메시지가 나타나면 암호문없이 enter 키를 누릅니다.
  2. cat ~/.ssh/id_rsa.pub (또는 ssh-keygen의 기본 파일 위치는 무엇이든간에 실제로는 오래된 ssh을 설치해야합니다. 출력을 클립 보드로 복사하십시오.
  3. 연결하려는 계정으로 대상 호스트에 정상적으로 로그인하십시오. ~/.ssh/authorized_keys 파일을 편집하십시오 (~/.ssh가 존재하지 않는 경우, slogin을 원하는 곳으로 만드십시오; 이것은 올바른 권한으로 간단하고 손쉽게 만들 수있는 방법입니다). 클립 보드 (다른 호스트의 id_rsa.pub 포함)를이 파일에 붙여 넣으십시오.
1
chaos

Linux의 모든 터미널에서이 작업을 수행하려면 다음을 수행하십시오.

호스트

cd ~/.ssh /

ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "원하는 경우 일부 주석 텍스트"-f id_ArbitraryName

{}의 항목은 옵션이고, rsa 또는 dsa를 사용하고 비트 크기를 선택합니다 (더 큰 것이 더 안전합니다)

그런 다음 authorized_keys 및 authorized_keys2 파일에 권한을 추가해야합니다.

cat id_ArbitraryName.pub >> authorized_keys

cat id_AribtraryName.pub >> authorized_keys2

그런 다음 ssh에서 가져올 상자에 id_AribtraryName 파일을 다운로드하십시오. 연결 박스가 유닉스 기반이라면, 설정 파일이 필요할 수 있습니다 (PuTTY에서, 위의 누군가가 그것을 덮었습니다).

연결 상자

설정 파일에서 - vim ~/.ssh/config

호스트 example.Host.com # 또는 컴퓨터 이름

사용자 이름

IdentityFile ~/.ssh/id_ArbitraryName

구성 파일에는 600의 사용 권한이 필요합니다. SSh 폴더에는 700이 필요합니다.

희망이 당신이 많이 생략 된 구성 문제로 실행하는 경우 도움이됩니다.

0
nerdwaller