개인 키를 사용하여 원격 서버에 ssh하는 방법?


77

두 대의 서버가 있습니다. 두 서버 모두 CentOS 5.6에 있습니다. 내가 가지고있는 개인 키 (OpenSSH SSH-2 개인 키)를 사용하여 서버 1에서 서버 2로 SSH하고 싶습니다.

유닉스를 통해 어떻게하는지 모르겠습니다. 그러나 Putty를 사용하여 창에서 한 일은 PutS-gen에 OpenSSH 개인 키를 공급하고 PPK 형식의 개인 키를 생성하는 것이 었습니다.

그러나 서버 1에서 SSH를 통해 일부 명령을 실행하는 bash 스크립트를 작성합니다.

서버 1의 개인 키 파일을 사용하여 서버 2에 SSH하려면 어떻게해야합니까?


1
많은 리눅스와 유닉스 시스템에서, 이것은 사용하여 수행 할 수 있습니다ssh-copy-id user@machine
폴 Tomblin에게

답변:


66

SSH 공개 키가 필요하며 ssh 개인 키가 필요합니다. 로 키를 생성 할 수 있습니다 ssh_keygen. 개인 키는 서버 1에 유지되어야하고 공개 키는 서버 2에 저장해야합니다.

이것은 openssh 맨 페이지에 완전히 설명되어 있으므로 많은 것을 인용하겠습니다. '인증'섹션을 읽어야합니다. 또한 openSSH 매뉴얼이 도움이 될 것입니다 : http://www.openssh.org/manual.html

ssh는 서버의 보안에 영향을주기 때문에주의하십시오.

보낸 사람 man ssh:

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

즉, 개인 키를 .ssh의 홈 디렉토리에 저장할 수 있습니다. 또 다른 가능성은 -i매개 변수 스위치를 통해 ssh 에 특수 ID 파일을 사용하도록 지시하는 것입니다. 또한 man ssh:

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

개인 키용입니다. 이제 서버 2에 공개 키를 소개해야합니다 man ssh.

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

이를 달성하는 가장 쉬운 방법은 파일을 서버 2에 복사하고 authorized_keys 파일에 추가하는 것입니다.

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

공개 키를 통해 인증은 ssh를 데몬에 허용해야 참조 man ssh_config. 일반적으로 이것은 구성 파일에 다음 명령문을 추가하여 수행 할 수 있습니다.

PubkeyAuthentication yes

10
노력해 주셔서 감사합니다.하지만 이것 만 있으면됩니다. ssh -i keyfile감사!
Aivan Monceller

8
키를 생성 한 후 서버에 키를 설치하는 가장 쉽고 권장되는 방법은 다음과 ssh-copy-id같습니다 ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com..
Gilles

5
ssh-add연결하는 컴퓨터에서 키를 생성 한 후 실행해야한다는 점을 모두가 잊어 버린 방법이 흥미 롭습니다 . 그것이 대부분의 사람들에게 두통을 일으키는 원인입니다.
루카

3
중요 참고 : 클라이언트는 많은 개인 키를 가질 수 있으며 개인 ~ / .ssh / config 파일에서 임의의 이름을 기반으로 선택할 수 있습니다. 여기서 Host =는 임의의 이름을, HostName은 이름 또는 IP 주소를, Port =는 대상 포트, 사용자는 대상 사용자 이름이며 ItentityFile =은 개인 키 파일을 가리 킵니다. 이 기능 세트는 간과되는 경우가 많으며 네임 스페이스에서 충돌하는 여러 키 쌍이있는 등 많은 구성 문제에 대한 솔루션입니다.
Richard T

1
나는 시도하고 사용하여 SSH로 연결하면 $ ssh -i ~/.ssh/id_rsa myuser@ssh.myhost.com나는 오류 얻을 myuser@ssh.myhost.com: Permission denied (publickey).로컬로 사용하여 추가, 내가 만든 키를을 ssh-add하고, 원격 서버에 인증 된 키로했다.
Aaron Franke

21

ssh를 -i 옵션과 함께 사용하여 키를 여기에 추가했습니다.

arg1, arg2를 .sh 파일과 함께 전달하려면 .sh 파일 뒤에 전달하고 사용 공간을 사용하여 구분하십시오.

ssh -i home/avr/new.pem ar@231.221.54.8 "/var/www/beta/betatolive.sh mmin 30"


1
올바른 권한을 설정하는 것을 잊지 마십시오 :chmod 600 home/avr/new.pem
Brian Haak

16

가장 먼저해야 할 일은 keygen 명령을 실행하여 키를 생성하는지 확인하는 것입니다.

ssh-keygen -t rsa

그런 다음이 명령을 사용하여 키를 원격 서버로 푸시하고 서버 이름과 일치하도록 수정하십시오.

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

6
ssh-copy-id user@hostname대신 전화합시다
andrej

7

ssh하려는 id_[rd]sa.pub소스 시스템 의 공개 키 ( ) ~/.ssh/authorized_keys를 ssh하려는 사용자 이름의 대상 서버 파일에 추가하십시오. 공개 키를 분실 한 경우을 사용하여 공개 키를 새로 만들고 싶을 것입니다 ssh-keygen. 대부분의 경우 기본 인수를 사용하는 것이 좋습니다. 더 자세한 지침이 필요한 경우 Google에 제공 할 수있는 수천 가지 자습서가 있습니다.


4

ssh-copy-id-로컬에서 사용 가능한 키를 사용하여 원격 시스템의 로그인 권한 부여

ssh-copy-id키 쌍 (으로 생성됨 ssh-keygen) 이 있다고 가정하면 서버 1에서 사용하십시오 .

ssh-copy-id -i ~/.ssh/id_rsa user@server2_hostname

이제 개인 키를 사용하여 ssh를 사용하여 서버 2로 ssh 할 수 있어야합니다.

ssh -i ~/.ssh/id_rsa user@server2_hostname

실제로 cat ~/.ssh/authorized_keys서버 2 를 확인 하면 공개 키가 추가 된 것을 볼 수 있습니다.

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