>

Paramiko 스크립트는 id_rsa를 사용하여 대화식 터미널에서 훌륭하게 실행됩니다. 크론 작업으로 갑자기 실행될 때 id_rsa가 유효하지 않은 것을 발견합니다. 모든 관련 파일에 대해 테스트 777 권한이 설정되지 않았습니다. 로그는 작업이 적절한 사용자로 실행되고 있음을 보여줍니다.

paramiko.ssh_exception.SSHException: not a valid RSA private key file

따라서 블록 끝의 명령문이 cron 작업으로 만 충족되는 경우 다음과 같습니다. `

 def _read_private_key(self, tag, f, password=None):
            lines = f.readlines()
            start = 0
            beginning_of_key = "-----BEGIN " + tag + " PRIVATE KEY-----"
            while start < len(lines) and lines[start].strip()
                                                 != beginning_of_key:
            start += 1
        if start >= len(lines):
            raise SSHException("not a valid " + tag + " private key file")
`

모든 통찰력에 감사드립니다.

편집 : 키를로드하는 코드 try: client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.WarningPolicy) client.connect(hostname = '<target>', key_filename = '/home/user/.ssh/id_rsa',username='root')

  • 답변 # 1

    저도 비슷한 상황에 직면했고 ssh-keygen이 도움을 받았습니다. id_rsa의 사본을 만들어 ssh-keygen을 사용하여 RSA 유형으로 변환 한 다음 해당 경로를 "key_filename"에 제공해야합니다.

    "BEGIN OPENSSH PRIVATE KEY"를 "BEGIN RSA PRIVATE KEY"로 변환하려면

    ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
    
    

  • 이전 python 3.x - importerror - 'sklearnbase'에서 'multioutputmixin'이름을 가져올 수 없습니다
  • 다음 jestjs - syntaxerror로 실패한 테스트 - 예기치 않은 토큰 내보내기