ssh-agent를 사용하여 비밀번호를 입력하지 않고 원격 서버에 SSH로 접속하세요.

ssh-agent를 사용하여 비밀번호를 입력하지 않고 원격 서버에 SSH로 접속하세요.

ssh-agent원격 서버를 사용하려고 합니다 ssh.

내가 아는 한, public_key원격 서버에 로컬 호스트를 추가하면 ./ssh/authorized_keys비밀번호를 입력하지 않고도 서버에 SSH로 접속할 수 있습니다.

그런데 Jenkins 파이프라인에서 원격 서버에 접속 ssh-agent해야 하기 때문에 이를 이용하려고 합니다 . sshJenkins에서 수행하기 전에 로컬에서 수행해 보았습니다.

내가 한 일은

eval $(ssh-agent -s)
chmod 600 ./key_key2.key
ssh-add ./key_key2.key
ssh root@<remote_server> docker ps -v

key_key2.key원격 서버 의 내용을 포함합니다 private_key.

그래도 비밀번호를 입력하게 됩니다. 이것이 올바른 접근 방식입니까?

사용한다는 것은 원격 서버에 추가될 부분을 ssh-agent건너뛰는 것과 같은 느낌인데 , 그 부분을 건너뛰는 것도 사용의 포인트 중 하나라고 생각합니다 .public_keyauthorized_keyspublic_key

답변1

ServerA가 홈 컴퓨터이고 ServerB가 원격 서버라고 가정합니다. 공개/개인 키를 통해 연결하려면 ServerA에 키 세트를 생성해야 합니다. 비밀번호를 입력하지 않았으니 참고해주세요.

ServerA $ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:11tmtkpYjGCPLc8I59kV1QySEYfwpJt76BDMX01aTkU admin@localhost
The key's randomart image is:
+---[RSA 4096]----+
|          ..==+=E|
|           +o+ .o|
|        o . o +  |
|       + = * O   |
|      . S B B B  |
|       + @ B * . |
|        = O + .  |
|         o o .   |
|          . .    |
+----[SHA256]-----+

보시다시피 키는 /home/admin/.ssh/id_rsa(개인 키) 및 /home/admin/.ssh/id_rsa.pub(공개 키)에서 생성됩니다.

이제 ServerB에 로그인하고 ServerA의 공개 키를 ~/.ssh/authorized_keys에 있는authorized_keys에 추가합니다.

ServerA $ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP4BIiaHUm6Ow9SGFOdHpsaAu2odnBLfDu5YjwQeESLe7ubfQ62v21PXKAJUVS0ZcAN7KfAfHv+f8Los8GE7NhAJUeOB18YpaQohLVaajKb0pSJnAfcYMqH38Ouq3Q23GA61ZqUF4o3pJpRf9O2V/qpIkGQtMZ1/EbYApvh0y+MSlmrDHNjm6n6LO1P31WqsAwzTlZilcaDJTDu3ILW+bd+b1LzMr2oQUPnrc2YIiGRt8PvvM5YcGfN9/4D1vKyLNgF3c+KhbEapsoxfsGmEl1Z+jR/ldep0jwEh7XVXAMrLWhtUdi/a40R0Zisj3b27gfrQLmEMBOS4X0nfDJ9/QoxVl16SwZWxFuDX1xV/n2XIAg1OQ== admin@localhost

ServerA의 출력을 복사하여 ServerBauthorized_keys에 붙여넣습니다.

ServerB $ cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP4BIiaHUm6Ow9SGFOdHpsaAu2odnBLfDu5YjwQeESLe7ubfQ62v21PXKAJUVS0ZcAN7KfAfHv+f8Los8GE7NhAJUeOB18YpaQohLVaajKb0pSJnAfcYMqH38Ouq3Q23GA61ZqUF4o3pJpRf9O2V/qpIkGQtMZ1/EbYApvh0y+MSlmrDHNjm6n6LO1P31WqsAwzTlZilcaDJTDu3ILW+bd+b1LzMr2oQUPnrc2YIiGRt8PvvM5YcGfN9/4D1vKyLNgF3c+KhbEapsoxfsGmEl1Z+jR/ldep0jwEh7XVXAMrLWhtUdi/a40R0Zisj3b27gfrQLmEMBOS4X0nfDJ9/QoxVl16SwZWxFuDX1xV/n2XIAg1OQ== admin@localhost

이제 serverA에 ssh-agent를 로드하고 개인 키를 추가하세요.

eval $(ssh-agent)
ServerA $ ssh-add ~/.ssh/id_rsa
Identity added: /home/admin/.ssh/id_rsa (/home/admin/.ssh/id_rsa)

ServerA $ ssh [email protected]
The authenticity of host '[someIP.com]:2220 ([xx.xxx.xxx.xxx]:2220)' can't be established.
ECDSA key fingerprint is SHA256:K6nMI2Dxb7t6oj00HlKmPCCuGorgQoBJCeXB31B9VTY.
ECDSA key fingerprint is MD5:aa:20:4f:08:bb:5d:c5:8e:fd:cb:4c:5f:b9:3b:44:59.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[someIP.com]:2220 ([xx.xxx.xxx.xxx]:2220)' (ECDSA) to the list of known hosts.
Last login: Tue Nov 26 21:20:14 2019
admin@mail ~]$

관련 정보