SSH KeyFile 및 SSH_Username을 Bash 스크립트의 변수로 바꿀 수 없습니다

SSH KeyFile 및 SSH_Username을 Bash 스크립트의 변수로 바꿀 수 없습니다

나는 우분투 20.04를 사용하고 있으며 다른 서버로 이식하려는 bash 스크립트를 실행하고 있지만 pubkey 오류 없이는 ID 파일과 ssh_username을 동시에 변수로 바꿀 수 없습니다.

먼저 shellcheck.net기본 구문이 올바른지 확인했습니다.

#!/bin/bash
source_ssh_user="admin"
source_ssh_host="123.456.789.12"
connecting_keyfile="/home/username/.ssh/id_my_rsa"


#this does NOT work, but it should:

ssh -i $connecting_keyfile $source_ssh_user@$source_ssh_host 

-vvv명령에 플래그를 추가하면 올바른 SSH 키 파일이 서버에 제공되는지 확인됩니다.

...
...
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/username/.ssh/id_my_rsa RSA SHA256:UXXXXXXXXUx/w1dY explicit agent
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug1: Offering public key: /home/username/.ssh/id_my_rsa RSA SHA256:UGKOXXXXXXXXXx/w1dY explicit
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
[email protected]: Permission denied (publickey).

기묘:

위의 명령을 사용자 이름을 명시적으로 정의하는 이 명령으로 바꾸면 동일한 키 파일 변수가 완벽하게 작동합니다.

ssh -p22 -i $connecting_keyfile username@$source_ssh_host

문제:

ssh_username을 변수로 바꾸면 내 암호 문구를 관리하는 ssh-agent가 암호 문구 자격 증명을 보내는 기능을 잃어버린 것 같습니다.

내 암호를 관리하기 위해 .bashrc에 다음이 있습니다.

#Add passphrase to ssh-agent
SSH_ENV="$HOME/.ssh/agent-environment"

function start_agent {
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
}

if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} doesn't work under cywgin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

그리고 이건 내~/.ssh/config


Host *
    AddKeysToAgent yes
    User username
    Port 22
    IdentityFile /home/username/.ssh/id_my_rsa

관련 정보