여러 개인 키를 사용하여 다른 서버 또는 동일한 서버의 다른 부분에 연결하고 싶습니다 (내 서버 사용은 서버의 시스템 관리, Git 관리 및 일반적인 Git 사용입니다). 나는 단순히 id_rsa
파일에 키를 쌓아 두는 것을 시도했다 .
분명히이 작업을 수행하는 간단한 방법은 명령을 사용하는 것입니다
ssh -i <key location> login@server.example.com
꽤 번거 롭습니다.
이 작업을 좀 더 쉽게 수행하는 방법에 대한 제안 사항이 있습니까?
답변
내에서 .ssh/config
:
Host myshortname realname.example.com
HostName realname.example.com
IdentityFile ~/.ssh/realname_rsa # private key for realname
User remoteusername
Host myother realname2.example.org
HostName realname2.example.org
IdentityFile ~/.ssh/realname2_rsa # different private key for realname2
User remoteusername
등등.
답변
연결시 ssh에게 여러 키를 연속해서 시도하도록 지시 할 수 있습니다. 방법은 다음과 같습니다.
$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_old
IdentityFile ~/.ssh/id_ed25519
# ... and so on
$ ssh server.example.com -v
....
debug1: Next authentication method: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa_old
debug1: read PEM private key done: type RSA
....
[server ~]$
이런 식으로 어떤 키가 어떤 서버에서 작동하는지 지정할 필요가 없습니다. 첫 번째 작업 키만 사용합니다.
또한 주어진 서버가 키를 수락하려는 경우에만 암호를 입력하십시오. 위에서 볼 수 있듯이 ssh는 암호가 .ssh/id_rsa
있더라도 암호를 요구하지 않았습니다 .
분명히 다른 답변과 마찬가지로 서버 당 구성보다 우수하지는 않지만 적어도 연결하는 모든 서버에 대해 구성을 추가 할 필요는 없습니다!
답변
Randal Schwartz 의 대답은 거의 모든 도움이되었습니다. 서버에 다른 사용자 이름이 있으므로 사용자 키워드를 파일 에 추가해야 합니다.
Host friendly-name
HostName long.and.cumbersome.server.name
IdentityFile ~/.ssh/private_ssh_file
User username-on-remote-machine
이제 이름을 사용하여 연결할 수 있습니다.
ssh friendly-name
OpenSSH 매뉴얼 페이지 에서 더 많은 키워드를 찾을 수 있습니다 . 참고 : 나열된 키워드 중 일부는 이미 / etc / ssh / ssh_config 파일에있을 수 있습니다.
답변
이전 답변에서는 여러 ssh 키를 관리하기 위해 구성 파일을 만드는 방법을 올바르게 설명했습니다. 설명해야 할 중요한 점 은 리포지토리를 복제하는 동안 호스트 이름을 별칭 이름으로 바꾸는 것입니다 .
회사의 GitHub 계정 사용자 이름이 abc1234 라고 가정합니다 . 개인 GitHub 계정의 사용자 이름이 jack1234 라고 가정하십시오.
그리고 두 개의 RSA 키, 즉 id_rsa_company 및 id_rsa_personal 을 생성했다고 가정합니다 . 따라서 구성 파일은 다음과 같습니다.
# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal
이제 회사의 GitHub 계정에서 저장소 (데모라고 함) 를 복제 할 때 저장소 URL은 다음과 같습니다.
Repo URL: git@github.com:abc1234/demo.git
이제을 수행하는 동안 git clone
위의 저장소 URL을 다음과 같이 수정해야합니다.
git@company:abc1234/demo.git
구성 파일에 정의 된대로 github.com이 이제 “company”라는 별칭으로 대체되는 방법에 주목하십시오.
마찬가지로 구성 파일에 제공된 별명에 따라 개인 계정에서 저장소의 복제 URL을 수정해야합니다.
답변
foo:~$ssh-add ~/.ssh/xxx_id_rsa
다음을 추가하기 전에 테스트해야합니다.
ssh -i ~/.ssh/xxx_id_rsa username@example.com
오류에 문제가있는 경우 때때로 파일의 보안을 변경하면 도움이됩니다.
chmod 0600 ~/.ssh/xxx_id_rsa
답변
-
SSH 키를 생성하십시오.
$ ssh-keygen -t rsa -C <email1@example.com>
-
생성
another SSH key
:$ ssh-keygen -t rsa -f ~/.ssh/accountB -C <email2@example.com>
이제 두 개의 공개 키 ( id_rsa.pub , accountB.pub )가
~/.ssh/
디렉토리 에 있어야합니다 .$ ls -l ~/.ssh # see the files of '~/.ssh/' directory
-
~/.ssh/config
다음 내용으로 구성 파일 을 작성하십시오 .$ nano ~/.ssh/config Host bitbucket.org User git Hostname bitbucket.org PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa Host bitbucket-accountB User git Hostname bitbucket.org PreferredAuthentications publickey IdentitiesOnly yes IdentityFile ~/.ssh/accountB
-
default
계정 에서 복제$ git clone git@bitbucket.org:username/project.git
-
accountB
계정 에서 복제$ git clone git@bitbucket-accountB:username/project.git
답변
ssh-agent 사용에 대해 Tuomas에 동의합니다. 또한 업무용으로 두 번째 개인 키를 추가하고 싶었고이 자습서 는 저에게 매력처럼 작용 했습니다.
단계는 다음과 같습니다.
$ ssh-agent bash
$ ssh-add /path.to/private/key
예 :ssh-add ~/.ssh/id_rsa
- 에 의해 확인
$ ssh-add -l
$ssh -v <host url>
예 를 들어 테스트ssh -v git@assembla.com