개인 키를 사용하여 원격 서버에 SSH로 연결하는 방법은 무엇입니까?

개인 키를 사용하여 원격 서버에 SSH로 연결하는 방법은 무엇입니까?

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

유닉스에서는 이 작업을 수행하는 방법을 모르겠습니다. 하지만 Windows에서 Putty를 사용하여 수행하는 작업은 OpenSSH 개인 키를 putty-gen에 제공하고 PPK 형식의 개인 키를 생성하는 것입니다.

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

서버 1의 개인 키 파일을 사용하여 SSH를 통해 서버 2에 어떻게 연결합니까?

답변1

간단히 말해서:-i기존 개인 키를 인라인으로 사용하려면 다음과 같이 매개변수를 사용하여 ID 파일 경로를 선택해야 합니다 .

ssh -i '/path/to/keyfile' username@server

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매개변수 스위치를 통해 특수 ID 파일을 사용하도록 ssh에 지시하는 것입니다. 또한 다음에서 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

답변2

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

arg1,arg2를 .sh 파일을 통해 전달하려면 .sh 파일 뒤에 공백으로 구분하여 전달하면 됩니다.

ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"

답변3

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

ssh-keygen -t rsa

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

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

답변4

id_[rd]sa.pub~/.ssh/authorized_keysssh하려는 사용자 이름에 대한 대상 서버의 파일 에 소스 머신(sshing 중인 곳)의 공개 키( )를 추가합니다 . 공개 키를 분실한 경우 이 작업이 필요합니다 ssh-keygen. 대부분의 경우 기본 매개변수를 사용해도 괜찮습니다. 더 자세한 지침이 필요한 경우 Google에서 수천 개의 튜토리얼을 검색할 수 있습니다.

관련 정보